странности рандоминга (PHP) Нужно было сделать что то вроде генератора ников на пхп. Много чего нашёл готового, но когда стал разбираться со всем этим мне показался странным процент уникальности такой генерки. Вот простенький скрипт PHP: <?php $rands = null; for ($j=0;$j<10000;$j++)//число генерируемых ников за раз $rands[] = generate_name(2); // 2- это число символов в нике echo count(array_unique($rands)).'<br>'; //здесь из массива выбираются только уникальные значения $rands = null; for ($j=0;$j<10000;$j++) $rands[] = generate_name(3); echo count(array_unique($rands)).'<br>'; $rands = null; for ($j=0;$j<10000;$j++) $rands[] = generate_name(4); echo count(array_unique($rands)).'<br>'; $rands = null; for ($j=0;$j<10000;$j++) $rands[] = generate_name(10); echo count(array_unique($rands)).'<br>'; $rands = null; for ($j=0;$j<10000;$j++) $rands[] = generate_name(20); echo count(array_unique($rands)).'<br>'; $rands = null; for ($j=0;$j<10000;$j++) $rands[] = generate_name(30); echo count(array_unique($rands)).'<br>'; $rands = null; for ($j=0;$j<10000;$j++) $rands[] = generate_name(40); echo count(array_unique($rands)).'<br>'; function generate_name($len){ $abc = array('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'); for ($i=0; $i<$len; $i++) $str .= $abc[array_rand($abc)]; return $str; } ?> вот что у меня возвращает такой скрипт (из раза в раз значения меняются совсем чуть-чуть) HTML: 560 2270 1210 1211 1211 1211 1211 Как 10000 3-х символьных слов могут быть более уникальны между собой в сранвении с уникальностью 10000 20-и символьных То ли я туплю, то ли просто что то недопонимаю..
PHP: function rnd($min,$max) {//Рандомные значения $len = mt_rand($min,$max); $str = array('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'r', 's', 't', 'u', 'v', 'x', 'y', 'z', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'P', 'R', 'S', 'T', 'U', 'V', 'X', 'Y', 'Z', '1', '2', '3', '4', '5', '6', '7', '8', '9'); for ($i = 0; $i < $len; $i++) $cod .= $str[mt_rand(0, count($str) - 1)]; return $cod; }
спасибо за ответы я так понял проблема в функции array_rand ? Потому как код Doom123 работает нормально
Потому что ты вероятнее всего запускал скрипт на винде, а в ней каждое сгенерированное число rand()'ом становится сидом для следующего.