我一直認爲我的代碼生成的是非常隨機的字符串,但我一直按F5約10分鐘,我一次顯示10個字符串,我有三個DUPLICATES,UNIBON,ZANOPE和ZOTAXS。PHP隨機字符串生成器...並非如此隨機
任何人都可以解釋爲什麼這是當我雖然有代碼26^6的可能性嗎?
$chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
$pass = '';
for ($i = 0; $i < $len; $i++){
$pass .= $chars[(rand() % strlen($chars))];
}
return $pass;
任何意見將不勝感激。
感謝
使用mt_rand第一個重複發生在10至60秒之間的平均水平,這似乎還好,不是嗎?
echo 'start: '.date('H:i:s');
for ($i = 1; ; $i++) {
$testarr[] = passGen(6);
$new = passGen(6);
if (in_array($new,$testarr)){
echo '<br>end: '.date('H:i:s');
echo '<br>string: '.$new;
echo '<br>count: '.count($testarr);
break;
}
}
可重複獲得相同的三個副本?大聲笑... – 2012-03-28 14:26:32
http://xkcd.com/221/ – 2012-03-28 14:27:13
也許嘗試'rand(0,strlen($ chars))' – phimuemue 2012-03-28 14:28:23