如何计算每个呈指数增长的数字的总和?

Posted

技术标签:

【中文标题】如何计算每个呈指数增长的数字的总和?【英文标题】:How to calculate the sum of numbers which are each increased exponentially? 【发布时间】:2019-03-07 08:50:43 【问题描述】:

我的数学很糟糕(对不起!)我无法计算出适合我的游戏的简单方程式。

在游戏中,我有一个物品的价格,你可以无限次购买 - 每次购买,价格都会上涨。

假设购买该商品的价格为 5 美元。在这里,我会买它10次: 5+20+45+80+125+180+245+320+405+500 = 购买 10 次的总成本为 1925 美元。

接下来我要完成的是提供 Buy x10、Buy x20 等按钮,这些按钮将计算一次购买 10 次的成本。

这是我目前的代码,它将导致上述价格:

    public function CalcuatePrice(timesAlreadyPurchased:Number,timesToBuy:int=1):Number 
        var price:Number;
        var basePrice:Number = 5;
        var multiplier:Number;

        //Always need at least 1 (items actually start at purchased 0 times)
        timesAlreadyPurchased += 1;

        //Apply iterations
        if (timesToBuy!=1)
            multiplier = (timesToBuy * (timesToBuy + timesAlreadyPurchased)) / 2;
         else 
            multiplier = timesAlreadyPurchased; 
        

        price = basePrice * multiplier;

        return price;
    

目前只在timesToBuy为1时有效。问题上线了:

multiplier = (timesToBuy * (timesToBuy + baseMultiplier)) / 2;

我只是不确定使用什么公式来获得“timesToBuy = 10”,当“timesAlreadyPurchased = 0”时返回 1925 美元的值。

另外——有人知道这种方程在数学中叫什么吗?也许是指数级数之和?谢谢。

【问题讨论】:

【参考方案1】:

看起来像一个算术级数。


价格上涨15、25、35、45等,所以n-th买入的价格可以表示为递推关系:

通过替换解决这个问题:

不错的简单表达。最后一步使用来自here 的公式。例如对于n = 3(第三次购买),价格是5 * 3^2 = 45


要得到总价,当然只是总结一下:

使用上面链接的同一页面中的另一个公式。

测试 5 次购买:

原文:5 + 20 + 45 + 80 + 125 = 275 公式:5 / 6 * 5 * 6 * 11 = 275

更新——“伪代码”中的公式:

price = (5.0 / 6.0) * timesToBuy * (timesToBuy + 1) * (2 * timesToBuy + 1);

【讨论】:

您好,感谢您的详细回复。不幸的是,我真的不知道如何阅读你写的东西,我在学校只做了非常基础的数学!有没有机会你可以用伪代码或类似的东西写这个:“multiplier = (timesToBuy * (timesToBuy + baseMultiplier)) / 2;” ? @Joe 我会写等效的代码,虽然我不知道你的“baseMultiplier”是什么 谢谢! baseMultiplier 实际上与“timesAlreadyPurchased”完全相同 - 在我的代码中没有注意到!我会在上面调整我的代码。

以上是关于如何计算每个呈指数增长的数字的总和?的主要内容,如果未能解决你的问题,请参考以下文章

Redshift 表在生产集群中占用的磁盘空间呈指数增长

Spark join 速度呈指数级增长

docker devicemapper 数据文件大小呈指数增长并消耗我的主机磁盘 90%

什么是形式验证?

斐波那契递归的优化及指数计算的优化

在 SQL 中将 XML 文档转换为表格数据集的有效方法,因为随着 xml 的增长,交叉应用 xml 查询的性能呈指数级下降