1

我不知道如何在 PHP 中做到这一点。

我所拥有的是:

$loops=10; $factor=5; $start=20; $end=80;

所以我想从 20 开始循环并通过执行 10 个循环达到确切的数字 80,并且每个循环的输出数之间的差异应该以某种方式受到因子 5 的影响(以指数方式)。因此,这些数字加在一起将是一条指数曲线。

(实际上它有点像 Flash 中的缓动脚本,您可以在其中定义缓动的速度=因子)

谢谢

4

2 回答 2

3
for($i = 20; $i <= 80; $i += 5)
于 2013-09-19T15:21:21.080 回答
1

如果你说你想要指数增长(而不是线性),那么你已经过度确定了你的factor问题。loops如果您只想要指数增长,那么您正在寻找一个等于=的因子(例如alpha)。然后通过将前一项乘以 来计算您的项。alpha(loops - 1)end/startalpha

$alpha = exp(log($end/$start)/($loops-1)));
for($i = $start; $i <= $end; $i*=alpha) {
  ...

如果您想“以某种方式使用该因素来影响增长”,那么“指数”是错误的术语。您可能需要更好地描述您真正想要的“增长”;我在上面的代码中演示了几何(或指数)增长的样子以及如何实现它;但是你可以以任何你想要的方式递增$i,以便2080...

更新如果你想改变变化率,你可以创建任意数量的方程(函数),这会导致“增加步长”。这里有几个例子:当它们的输入参数从 to 变化时,它们从0to变为- 你所要做的就是将输出乘以范围来得到它。101

y = x^factor
y = x ^ (1 / factor)

你可以使用许多其他的......要使用这样的功能,你可以例如做

for($i=1; $i < $loops; $i++) {
  $x = $i / ($loops - 1);
  $value = ($end - $start) * pow($x, $factor) + $start
}

这不会计算第一个值,因为pow当基数为零时不喜欢它。我相信你可以解决这个问题......(提示 - 第一个值等于$start)。

于 2013-09-19T15:29:20.523 回答