【发布时间】:2009-06-24 23:39:50
【问题描述】:
PHP 的rand() 函数不能提供好的随机数。所以我开始使用mt_rand(),据说效果更好。但这些结果有多好?有什么方法可以再次改进吗?
我的想法:
function rand_best($min, $max) {
$generated = array();
for ($i = 0; $i < 100; $i++) {
$generated[] = mt_rand($min, $max);
}
shuffle($generated);
$position = mt_rand(0, 99);
return $generated[$position];
}
这应该给你“完美”的随机数,不是吗?
【问题讨论】:
-
最新版本的php有一个cryptographically secure PRNG。
-
如果有人正在阅读这篇文章,请跳过接受的答案,因为this answer is the correct one。如果您在 PHP 5 上遇到困难,请查看 random_compat。