PHP mt_rand()函数

时间:2012-01-05 11:46:30

标签: php

PHP随机数是否可预测?如果是这样,预测1到32范围内的随机数是多么困难?有没有办法让它变得不可预测?

<?php
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];
}
?>

3 个答案:

答案 0 :(得分:7)

关于编程中随机随机函数的讨论是古老的。

看看这个:http://en.wikipedia.org/wiki/Random_number_generation

反正。随机函数今天非常好,它们(我会称之为)尽可能接近随机。没有办法预测1,32(或任何其他数字)之间的结果。这笔交易是数字不是真正随机的,因为计算机无法进行这样的操作。

除非你为五角大楼写点什么,否则兰德函数已经足够好了

答案 1 :(得分:2)

假设有一个Linux系统,您可以使用/dev/urandom(或从中读取)或可能/dev/random为您的伪随机数生成器播种(小心,它可以阻止)。

答案 2 :(得分:1)

在PHP 7版本之后,您也可以使用random_int()
看看这个:http://php.net/random_int