我需要在我的脚本中生成大约5,000个随机数,但CPU速度太快,以至于我看到了随机数中的趋势。
例如,在100次第一次迭代中,我使用rand(0,100);得到70到70和99之间的值,这可能是一个真正的不方便。
有没有办法解决这个问题,或者2012年的随机性是否已经无法实现?
我相信有可能从执行随机次数的函数中生成随机数...但我无法找出一个。
答案 0 :(得分:5)
您使用的是rand()
吗?考虑“generating a better random value”。
附录;看到two sides硬币总是好的。
答案 1 :(得分:1)
rand
按时间播种。 mt_rand
可能会对您有所帮助。如果您希望获得更好的随机性,则可以使用openssl_random_pseudo_bytes
(如果可用)或/dev/[u]random
,如果您无法访问它并且位于可用的系统上。如果你使用那些,你必须用hexdec(bin2hex())
转换字节来获得十进制数字,并在此之后截断它们。
答案 2 :(得分:0)
mt_rand()是对rand()的改进。但是,随机数是从序列生成的,所以......
答案 3 :(得分:0)
使用此功能:
function Random($length = 210) {
$characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$randomString = '';
for ($i = 0; $i < $length; $i++) {
$randomString .= $characters[rand(0, strlen($characters) - 1)];
}
return $randomString;
}
您可以将210更改为您希望有帮助的任何数字