【发布时间】:2017-03-03 19:52:15
【问题描述】:
是否有可能为 PHP 中的函数 array_rand 获得更好的随机(伪随机)。 类似 random_int 的东西(在 PHP 7 中添加)
谢谢
【问题讨论】:
-
“更好”是什么意思?
是否有可能为 PHP 中的函数 array_rand 获得更好的随机(伪随机)。 类似 random_int 的东西(在 PHP 7 中添加)
谢谢
【问题讨论】:
array_rand 返回数组的一个随机键,默认情况下。此函数使用Mersenne Twister。如果您只需要数组的一个 随机 值,您可以使用 random_int。
例如:
// One array:
$array = [0 => 'aaa', 100 => 'bbb', 'c' => 'ccc'];
// Force numeric key (now will be [0 => 'aaa', 1 => 'bbb', 2 => 'ccc']):
$array = array_values($array);
// Get one number between 0 and 2 (in this case):
$random_key = random_int(0, count($array) - 1);
echo $array[$random_key];
// Response: bbb
为了更易于使用,您可以使用以下内容:
function random_array(array $array) {
$array = array_values($array);
return $array[ random_int(0, count($array) - 1) ];
}
只打电话:
$array = [0 => 'aaa', 100 => 'bbb', 'c' => 'ccc'];
echo random_array($array);
// Response: ccc
【讨论】: