PHP生成随机数

时间:2012-05-10 04:16:28

标签: php

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

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

有没有办法解决这个问题,或者2012年的随机性是否已经无法实现?

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

4 个答案:

答案 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更改为您希望有帮助的任何数字