如何在PHP中更好地随机获取array_rand

时间:2017-03-03 19:52:16

标签: php arrays random php-7

是否可以在PHP中为函数array_rand获得更好的随机(伪随机)。 像random_int(在PHP 7中添加)

谢谢

1 个答案:

答案 0 :(得分:1)

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

Test it!