我试图实现指数增长,数小时砸我的脑袋。我尝试了二度方程,但结果不是我的预期。让我解释一下。
我有基于贷方余额的按使用付费服务。用户可以随时上传资金到他们的帐户。我想激励客户上传更多资金,以避免微支付和更高的交易费用。为了缩短你支付的金额,你获得的奖金就越多。例如,用户可以通过两种方式在其帐户中存入100美元:
for($amount=10;$amount<=5000;$amount +=10)
{
$rate=0.005;
$bonus=exp($rate*$amount);
echo "Deposit ".$amount."$ and gain ".$bonus." bonus<br>";
}
最低存款额为10美元,最高存款额为5000美元,这就是为什么我从10循环到5000的原因。问题很简单。
Deposit 10$ and gain 1.05127109638 bonus
...
Deposit 100$ and gain 1.6487212707 bonus
...
Deposit 1000$ and gain 148.413159103 bonus
...
Deposit 2500$ and gain 268337.286521 bonus
...
Deposit 5000$ and gain 72004899337.4 bonus
对于少量而言,你得到的数量太少,对于大数量而言,得分太多。我也尝试了不同的范围,例如10到100美元,具有一定的比率,200到1000与另一个(...)但当然当你存入接近这些限制的金额时,你得到的奖金更少。这不符合逻辑。
Deposit 1000$ and gain 54.5981500331 bonus
... here starts the next range ...
Deposit 1250$ and gain 42.5210820001 bonus
我也试过这种方法:
function foo($wanted=1000, $rangeLow=10, $rangeHigh=5000){
$increment=($rangeHigh-$rangeLow)/($wanted+1);
$r=array();
for ($i=$rangeLow+$increment;$i<$rangeHigh;$i+=$increment)
$r[]=$i;
return $r;
}
我&#34;传播&#34; 1000美元和5000美元之间的1000点奖励积分,但是当我需要一个指数时,我得到一个线性增加。可能解决方案是混合两种方法,但我不知道如何。
答案 0 :(得分:2)
pow
返回以exp为幂的基数。
exp
将e提升为arg的力量。
e.g。
for($amount=10;$amount<=5000;$amount +=10)
{
$rate=0.05; //adjust as needed, 0.08 makes 5000 -> about x2
$bonus=pow($amount, $rate);
echo "Deposit ".$amount."$ and gain ".$bonus." bonus<br>\n";
}
输出:
Deposit 10$ and gain 1.122018454302 bonus
Deposit 20$ and gain 1.1615863496415 bonus
Deposit 30$ and gain 1.1853758165593 bonus
..
Deposit 1000$ and gain 1.4125375446228 bonus
..
Deposit 5000$ and gain 1.5309059120639 bonus
答案 1 :(得分:0)
您是否只需要保留exp
功能,但是将其乘以小于1的值?如果我的数学正确,那应该会使指数曲线变平。
答案 2 :(得分:0)
我终于设法完成了这项任务。这不是你只能用PHP实现的东西。您还需要一个等式,否则您无法控制增量。
在我的情况下,我有一个抛物线方程,给出3个点,必须定义最低值和最高值。我想给10到5000美元的进口最高奖金1000和最低0.1。我在Excel上使用矩阵反转值的矩阵产品。无论如何,我不会分享整个公式,因为它太具体了。我更愿意与你分享这个故事的PHP方面。
我想在PHP中“转换”我的Excel公式但是我花了太多时间来编写矩阵计算,然后我决定寻找现有的库。梨有一个Math_Matrix包裹。如果您不想重新编译Web服务器以获取Pear,则可以使用此PHP class。我测试了矩阵求逆并且它有效。
我建议您不要使用上述任何解决方案,除非您经常使用矩阵数学。在Excel或使用“旧”笔和纸计算所有必要值时更方便,更有效,这样您就可以传递给PHP,简单计算,如+, - ,*,^ 2等。