Рецепт №22. Из книги «128 рецептов php»
Перейти к оглавлению
В предыдущем рецепте был описан процесс генерации случайных чисел. Но бывает необходимо получить несколько случайных чисел. И не просто несколько чисел, а таким образом, чтобы все они были различными. Для реализации такого рецепта, в php нет готовых решений, поэтому необходимо сделать это самим. В основе реализации будут лежать все те же функции php, которые генерируют случайное число, только после каждой генерации необходимо выполнять проверку, существует такое число в списке или нет. Если такое число уже сгенерировано, то необходимо повторить генерацию.
Пример:
// хранилище для чисел $outArray = array(); // максимальное число $max = 10; // минимальное число $min = 0; // необходимое количество чисел $count = 10; // счетчик полученных чисел $i = 0; // цикл, который будет выполняться, // пока не будут получены все уникальные числа while($i<$count){ // генерируем случайное число $chislo = mt_rand($min, $max); // проверяем уникальность числа if(!in_array($chislo, $outArray)){ // если уникальное, то записываем его в массив $outArray[$i] = $chislo; $i++; } } // вывод результата var_dump($outArray);
В примере была использована ранее не описанная функция in_array, она позволяет осуществлять проверку наличия элемента в массиве.