Почему 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;
}
→ Ссылка
Автор решения: Robert Cody

Код верный, но использование его внутри админ контроллера в Opencart дает предвзятые результаты. Возможно дело в формировании токена. Посему, вопрос закрыт. Всем спасибо за помощь!

→ Ссылка