PHP rand function (o non così rand)

4

Stavo testando la funzione PHP rand per scrivere su un'immagine. Ovviamente l'output mostra che non è così casuale. Il codice che ho usato:

<?php 
header('Content-Type: image/png');
$lenght = 512;
$im = imagecreatetruecolor($lenght, $lenght);
$blue = imagecolorallocate($im, 0, 255, 255);
for ($y = 0; $y < $lenght; $y++) {
    for ($x = 0; $x < $lenght; $x++) {
        if (rand(0,1) == 0) {
            imagesetpixel($im, $x, $y, $blue);
        }
    }
}       
imagepng($im);
imagedestroy($im);
?>

La mia domanda è, se uso larghezza / lunghezza dell'immagine (variabile $ lunghezza in questo esempio) numero come 512, 256 o 1024, è molto chiaro che non è così casuale. Quando cambio la variabile in 513 per un esempio, è molto più difficile per l'occhio umano rilevarla. Perché? Cosa c'è di così speciale in questi numeri?

512:

513:

Modifica: eseguo xampp su Windows per testarlo.

    
posta Badr Hari 24.11.2011 - 20:16
fonte

1 risposta

9

Questo è un bug noto che non è correlato a PHP, ma è inerente all'API di Windows utilizzata da PHP. La funzione casuale di questa API è pessima.

Questo problema non esiste su Linux o MacOS (o qualsiasi altro sistema).

Puoi saperne di più su questo qui: link

Se è più visibile con un certo valore, ciò è dovuto principalmente alle dimensioni dell'immagine e alle linee chiare formate dal modello. Questo è definitivamente collegato alla nostra percezione, alcuni modelli sembrano più casuali di altri.

La funzione casuale del cervello umano è molto buggata. Ciò che vediamo come casuale o non è affatto affidabile. Questo è un fenomeno noto ma fuori tema qui.

    
risposta data 24.11.2011 - 20:26
fonte

Leggi altre domande sui tag