【发布时间】:2018-03-26 03:18:48
【问题描述】:
我使用带有数组的array_rand PHP 函数。我将它与数据夹具函数一起使用,该函数在这样的循环中加载一组数据:
$random_values = array();
for ($i = 0; $i < 20; $i++) {
$random_values[] = array_rand(["1","2","3","4","5"]);
}
我的结果在 $random_values 数组中总是“1”,即本机 PHP函数似乎不是真的随机,还有其他事情要做吗 改进我的算法的随机化?
注意我已经知道这里有一个官方文档,http://php.net/manual/fr/function.array-rand.php。
【问题讨论】:
-
看看播种 rng 是否有助于您的测试:
srand ((float) microtime() * 10000000);... 是一个基本示例(在执行数组之前放置)。 -
您运行的是什么版本的 PHP?如果您使用的 PHP 版本足够老,需要
srand(),那么您有很多、很多更大的问题。 -
还有一个事实是,“随机”并不意味着“公平”或“均匀”,特别是对于少量事件,例如:20。一个 完美 RNG 可以从现在到太阳熄灭,只吐出数字 42,因为这与任何其他输出集一样可能。