Почему PHP рандом генерирует строки с одинаковыми символами?
форумчане!
Никогда раньше такого не замечал, но вдруг столкнулся с проблемой повторяющихся символов в рандомно сгенерированной строке. Код:
$input = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ';
$input_length = strlen($input);
$random_string = '';
for($i = 0; $i < 6; $i++) {
$random_character = $input[rand(0, $input_length - 1)];
$random_string .= $random_character;
}
return $random_string;
И в итоге получаю такой результат из 10 строк:
У меня даже при нежелании не получилось не заметить, что символы повторяются в строке по нескольку раз.
Почему так происходит ?
Ответы (2 шт):
Гипотеза: проблемный код отличается от опубликованного.
Судя по результатам, вы делаете шафл строки, а потом в цикле выбираете только из нескольких 4-5 первых символов. Например так:
function badRandom() {
$input = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
$shuffled = str_shuffle($input);
$input_length = strlen(input);
$random_string = '';
for($i = 0; $i < 6; $i++) {
$random_character = $shuffled[rand(0, $input_length - 1)];
$random_string .= $random_character;
}
return $random_string;
}
Код верный, но использование его внутри админ контроллера в Opencart дает предвзятые результаты. Возможно дело в формировании токена. Посему, вопрос закрыт. Всем спасибо за помощь!
