我试图找出一个算法来得到一个排列的结果,这个结果是与中心等距的交点(可以是基于百分比的)。因此,我的最终结果应该是:x= 20 (基于项目#的分离距离)- 100 /5 (5项分布在100%以上)。
另一个结果是,如果我们有10项(X = 100 / 10):
如果这很重要,我将尝试使用PHP来实现这个算法。我不太喜欢数学,所以我不确定这类计算是否有名字。谢谢!
发布于 2013-03-25 05:59:18
您可以编写如下函数:
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是初始值之后的条目数。
例如:
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
)发布于 2013-03-25 05:55:39
如果我对你的理解是正确的,这应该是可行的:
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}https://stackoverflow.com/questions/15608454
复制相似问题