昨天我无意中听到一个关于rand()和的话题mt_rand(),一位同事说这两个都是可以预测的,你应该使用不同的功能?我想知道,我知道rand()在某种程度上是可以预测的,并且经过一些谷歌搜索.mt_rand()如果我正确地提到这一点,甚至可以预测.
为此,我写了一小段代码,它创建了一个图像:
<?php
header("Content-type: image/png");
$im = imagecreatetruecolor(512, 512) or die("Cannot Initialize new GD image stream");
$white = imagecolorallocate($im, 255, 255, 255);
$black = imagecolorallocate($im, 0, 0, 0);
for ($y = 0; $y < 512; $y++) {
for ($x = 0; $x < 512; $x++) {
if (rand(0, 1)) {
imagesetpixel($im, $x, $y, $white);
}
else{
imagesetpixel($im, $x, $y, $black);
}
}
}
imagepng($im); imagedestroy($im);
?>
Run Code Online (Sandbox Code Playgroud)
此代码输出此图像,因为您可以看到它具有某种模式:

而mt_rand()函数给了我这个输出:

现在我的问题是,mt_rand()真的是可预测的,与rand()功能相比,我似乎很随机.