Ieri ho sentito una conversazione su rand()
e mt_rand()
, un collega ha detto che entrambi sono prevedibili e dovresti usare diverse funzioni? Mi stavo chiedendo, lo so che rand()
è prevedibile in qualche modo, e dopo qualche ricerca su google. Anche mt_rand()
sembra prevedibile se ho letto correttamente.è mt_rand() più sicuro di rand()
Per questo ho scritto un piccolo pezzo di codice, che crea un'immagine:
<?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);
?>
questo uscite di codice di questa immagine, come si può vedere che ha un qualche tipo di modello:
mentre la funzione mt_rand()
mi ha dato questo output:
ora la mia domanda è, è mt_rand()
davvero così prevedibile, sembra pret casuale a me rispetto alla funzione rand()
.
http://stackoverflow.com/questions/7808021/whats-the-disadvantage-of-mt-rand –
Cosa intendi con * secure * in questo caso? Intendi nel senso che il valore non può essere previsto? –
Questo metodo è molto meglio che stampare numeri casuali 10000 volte e contarli. –