我正在试图找出一种算法来得出一个阵列结果,该结果是与中心等距的交替点(可以是基于百分比的)。所以,我的最终结果将是这样的: X = 20(基于项目数的间隔距离) - 100/5(5个项目分布在100%以上)
另一个结果是如果我们有10个项目(X = 100/10):
如果这很重要,我正在尝试使用PHP来实现这个算法。我不是一个数学专家,所以我不确定这种类型的计算是否有名称。谢谢!
答案 0 :(得分:0)
如果我理解正确,这应该有效:
function pointsArray($center, $numPoints) {
$arr = array();
$arr[0] = $center;
for($i = 1;$i < $numPoints; $i++)
$arr[$i] = $i%2 == 0 ? $center - ($i-1)*20 : $center + $i*20;
return $arr;
}
比,你可以使用这样的功能:
$PointsArray = pointsArray(50, 5); // {50,70,30,90,10}
答案 1 :(得分:0)
您可以编写如下函数:
function getArrayEquidistant($startValue, $step, $nbEntries)
{
$i = 0;
$count = 1;
$final = array();
$final[] = $startValue;
while($i < $nbEntries)
{
if ($i % 2 == 0)
$final[] = $startValue + ($count * $step);
else
{
$final[] = $startValue + ($count * $step);
$count++;
}
$i++;
}
retun $final;
}
其中$startValue
是初始值(在索引0处),$step
是每次迭代时添加或子的值,$nbEntries
是初始值后的条目数。< / p>
例如:
print_r(getArrayEquidistant(50, 20, 10));
会给你:
Array
(
[0] => 50
[1] => 70
[2] => 30
[3] => 90
[4] => 10
[5] => 110
[6] => -10
[7] => 130
[8] => -30
[9] => 150
[10] => -50
)