我需要以降级顺序为多个点分配一个数字。
例如,
N = 100 // this 100 is fixed
no_of_points = 10 // no of points will vary
需要按降序随机将100分为10分。
e.g:
80, 55, 32, 18, 10, 10, 10, 8, 2, 0
下面,
我尝试做类似的事情:
private static function generateRandomPercentage($no_of_points)
{
$distributions = [];
// need to start from 80
// but it may vary also
$max = mt_rand(80, 81);
$ratio = $max / $no_of_points;
for( $i = 1; $i <= $no_of_points; $i++ ) {
$delta = ($ratio * $i);
$distributions[] = round(($max - $delta) / 100, 2);
}
print_r($distributions);
}
但没有任何效果。 请帮帮我。
答案 0 :(得分:0)
可以使用php标准函数完成:
$N = 100 // this 100 is fixed
$no_of_points = 10 // no of points will vary
$distributions= rsort(array_slice(shuffle(range(1,$N)), 0, $no_of_points);
print_r($distributions));
range =创建值为1 ... n
的数组shuffle = shuffle array
array_slice =返回数组的一部分
rsort =排序数组值高到低值