Генерация уникальных случайных чисел

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

Рассказать друзьям:


Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*