Рецепт №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, она позволяет осуществлять проверку наличия элемента в массиве.
