我需要生成一个范围内的随机唯一数字,我该怎么做?我可以通过
生成随机数generator:
$arr = [];
$x = rand($min, $max);
$len = count($arr);
$flag = 0;
for($i = 0; $i < $len; $i++)
{
if ($flag === 1)
goto generator;
if ($x === $arr[$i])
$flag = 1;
}
$arr[$index] = $x;
$index++;
goto generator;
我知道这段代码很糟糕,所以我需要一个更好的优化我的版本的代码! 帮助!
示例: 如果我需要生成 1 到 15 之间的 3 个数字,它们应该是 5、9、1 但不是 3、1、2 [在 1 - 3 中(我想生成的数字)]
最佳答案
随机排列数字范围的数组:
$numbers = range(1, 20);
shuffle($numbers);
包装函数:
function UniqueRandomNumbersWithinRange($min, $max, $quantity) {
$numbers = range($min, $max);
shuffle($numbers);
return array_slice($numbers, 0, $quantity);
}
例子:
<?php
print_r( UniqueRandomNumbersWithinRange(0,25,5) );
?>
结果:
Array
(
[0] => 14
[1] => 16
[2] => 17
[3] => 20
[4] => 1
)
关于php - 在一个范围内生成唯一的随机数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5612656/