为什么 php rand() 函数给出了一些空的时间?
why php rand() function gives some time empty?
你好,当我尝试使用 rand()
函数时,它有时会像
一样是空的
// I want random value between 0-5000 , want 500 random value
for ($i=0; $i < 500; $i++) {
$randNo = rand(0, 5000);
if (in_array($randNo, $randArray)) {
$randNo = InfiniteLoop($randArray ,$length_sec);
}
array_push($randArray,$randNo);
}
sort($randArray);
之后我打印该数组并给出一些空值。
//output
Array ( [0] => [1] => 523 [2] => 824 [3] ....so on )
问题可能出在您的 'InfiniteLoop' 函数上,它覆盖了 rand()
的结果
如果你想要 500 个 distinct 0 到 5000 之间的随机数,那么你应该使用 shuffle()
和 array_slice()
:
$allNumbers = range(0, 5000);
shuffle($allNumbers);
$randomNumbers = array_slice($allNumbers, 0, 500);
使用:
$allNumbers = [];
for ($i = 0; $i < 5000; $i++) {
$allNumbers[] = $i;
}
uniqid($allNumbers);
你好,当我尝试使用 rand()
函数时,它有时会像
// I want random value between 0-5000 , want 500 random value
for ($i=0; $i < 500; $i++) {
$randNo = rand(0, 5000);
if (in_array($randNo, $randArray)) {
$randNo = InfiniteLoop($randArray ,$length_sec);
}
array_push($randArray,$randNo);
}
sort($randArray);
之后我打印该数组并给出一些空值。
//output
Array ( [0] => [1] => 523 [2] => 824 [3] ....so on )
问题可能出在您的 'InfiniteLoop' 函数上,它覆盖了 rand()
的结果如果你想要 500 个 distinct 0 到 5000 之间的随机数,那么你应该使用 shuffle()
和 array_slice()
:
$allNumbers = range(0, 5000);
shuffle($allNumbers);
$randomNumbers = array_slice($allNumbers, 0, 500);
使用:
$allNumbers = [];
for ($i = 0; $i < 5000; $i++) {
$allNumbers[] = $i;
}
uniqid($allNumbers);