Is it possible to predict rand(0,10) in PHP?

后端 未结 6 1691
栀梦
栀梦 2020-12-15 06:46

I have a script where I use the rand function in PHP. Now I read some ghost stories that its real easy to predict those outcomes. Is this possible from the client-side?

6条回答
  •  醉酒成梦
    2020-12-15 07:24

    rand() function returns a pseudorandom number . This does NOT mean that the next number can be predicted. However this image can explain the concept of word pseudorandom

    rand

    You can read this article

    the image is generated from a simple loop with rand function on windows system.

    header("Content-type: image/png");
    $im = imagecreatetruecolor(512, 512) or die("Cannot Initialize new GD image stream");
    $white = imagecolorallocate($im, 255, 255, 255);
    for ($y = 0; $y < 512; $y++) {
        for ($x = 0; $x < 512; $x++) {
            if (rand(0, 1)) {
                imagesetpixel($im, $x, $y, $white); 
            } 
        } 
    } 
    imagepng($im); imagedestroy($im);
    

    It's not so random, really? But now that you know it... you can predict the next number?

    The difference between true random number generators (TRNGs) and pseudo-random number generators (PRNGs) is that TRNGs use an unpredictable physical means to generate numbers (like atmospheric noise), and PRNGs use mathematical algorithms (completely computer-generated)

    [...]

    Not many PRNGs will produce an obvious visual pattern like this, it just so happens to be a really bad combination of language (PHP), operating system (Windows), and function (rand()).

提交回复
热议问题