PHP伪随机是多么随机,4个字节

时间:2015-05-01 15:42:57

标签: php hash cryptography crc32

我一直在测试PHP中生成的值的随机性,并且一直在考虑32位十六进制来表示给定时间范围内的唯一状态。

我写了这个简单的测试脚本:

$checks = [];
$i = 0;

while (true) {
    $hash = hash('crc32b', openssl_random_pseudo_bytes(4));

    echo $hash . PHP_EOL;

    if (in_array($hash, $checks)) {
        echo 'Copy: ' . $i . PHP_EOL;
        break;
    }

    $i++;

    $checks[] = $hash;
}

令人惊讶的是(对我来说)这个脚本在不到100,000次迭代中生成一个副本,并且低至1000次迭代。

我的问题是,我在这里做错了吗?在40亿种可能性中,这种频率似乎太不可能了。

0 个答案:

没有答案