2

我需要在我的脚本中生成大约 5,000 个随机数,但是 CPU 太快了,以至于我看到了随机数的趋势。

例如,在 100 次第一次迭代中,我使用 rand(0,100); 得到了 70 到 99 之间的 80 个值,这可能会带来真正的不便。

有没有办法解决这个问题,或者随机性在 2012 年不再实现?

我相信有可能从执行随机次数的函数中生成随机数......但我想不出一个。

4

4 回答 4

5

你在用rand()吗?考虑“生成更好的随机值”。

附录; 看到硬币的两面总是好的。

于 2012-05-10T04:25:35.837 回答
1

rand是由时间播种的。 mt_rand可能对你更好。如果您想要更好的随机性,您可以使用openssl_random_pseudo_bytes(如果可用),或者/dev/[u]random如果您无权访问它并且在可用的系统上。如果使用这些,则必须将字节转换为hexdec(bin2hex())十进制数字,然后可能会截断它们。

于 2012-05-10T04:27:32.243 回答
0

mt_rand() 是对 rand() 的改进。但是,随机数是从序列中生成的,所以...

于 2012-05-10T04:26:29.297 回答
0

使用此功能:

function Random($length = 210) {
$characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$randomString = '';
for ($i = 0; $i < $length; $i++) {
    $randomString .= $characters[rand(0, strlen($characters) - 1)];
}
return $randomString;
}

您可以将 210 更改为您想要的任何数字,希望这会有所帮助

于 2013-10-25T22:39:17.077 回答