为了达到指数级的增长,我几个小时都在拼命工作。我试过用二阶方程,但结果与我所期望的不一样。让我解释一下。
我有一种基于信用平衡的每次使用支付服务。用户可以随时上传资金到他们的帐户。我希望鼓励客户上传更多的资金,以避免小额支付和更高的交易费用。为了缩短时间,你付出的越多,得到的奖金就越多。例如,用户可以通过两种方式将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;
}我“散布”了1000个加值点,介于10美元到5000美元之间,但随着这一点,我得到了一个线性增长,而我需要一个指数增长。也许解决方案是将这两种方法混合在一起,但我不知道如何。
发布于 2014-06-06 03:05:41
我终于完成了这项任务。这不是你只能使用PHP就能实现的东西。你也需要一个等式,否则你就无法控制增长。
在我的例子中,我有一个抛物线方程,给出了3个点,其中必须定义最低值和最高值。我想给1000的最高奖金和最低0.1的进口从10美元到5000美元。我是在Excel上用矩阵求值的乘积做的。无论如何,我不会分享整个公式,因为它太具体了。我更愿意和你分享这个故事的PHP方面。
我想在PHP中“转换”我的Excel公式,但是我花了太多的时间来编写矩阵计算,然后我决定寻找一个现有的库。Pear有一个矩阵包。如果您不想重新编译您的get服务器以获得Pear,您可能可以使用这个Pear。我测试了矩阵反转,它起作用了。
我建议你不要使用上面的任何一种解,除非你经常使用矩阵数学。在Excel上或用“旧”笔和纸计算所有必需的值更方便和有效,这样就可以传递到PHP简单的计算,如+、-、*、^2等等。
发布于 2014-06-03 19:58:44
我想你想要pow函数而不是exp
pow返回基值提升到exp的能力。
exp将e返回到arg的强大功能。
例如:
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发布于 2014-06-03 19:48:40
难道你不需要保留你的exp函数,但是把它乘以小于1的值吗?如果我的数学是正确的,那就会使指数曲线变平。
https://stackoverflow.com/questions/24023616
复制相似问题