Как выбрать 10 случайных не повторяющихся чисел из массива на PHP?

Приветствую вас дорогие друзья! В этой небольшой заметке я приведу пример решения одного из вопросов по PHP.

Как выбрать 10 случайных не повторяющихся чисел из массива на PHP?

Данный вопрос был задан одним из читателей данного блога, суть вопроса (задачи) заключалась в следующем:

Имеется массив, содержащий тысячу различных чисел. Числа могут повторять, но точно известно, что в массиве имеются как минимум десять различных (встречающихся один раз) чисел. Среди всех чисел исходного массива выбрать и вывести на экран только 10 не повторяющихся чисел.

Решение задачи

Решить данную задачу можно по-разному, я приведу одно из решений – рассмотрим алгоритм:

  1. Создадим дополнительный массив
  2. Объявим переменную, с помощью которой будем выходить из цикла
  3. С помощью случайного числа будем выбирать случайный элемент исходного массива
  4. Проверим выбранное число на вхождение в дополнительный массив, и если не входит, то добавляем
  5. Если размер дополнительного массива равен 10 – значит выходим из цикла
  6. Выводим отобранные числа на экран

Теперь давайте рассмотри реализацию данного алгоритма на PHP:

<?
	$default_array = array(576, 1657, 7,...,983); //Исходный массив
	$new_array = array(); //Новый (дополнительный) массив
	$end = 0; //Флаг окончания выборки
	
	while( $end == 0 ){
	
		$random = rand(1, 1000); //Случайное число от 1 до 1000

		if ( !in_array($default_array[$random], $new_array) )  $new_array[] = $default_array[$random];
		
		if( count($new_array) == 10 ) $end = 1;
	}
	
	//Выводим числа
	foreach( $new_array AS $item ){	
		echo $item.'<br>';	
	}
?>

 

  • Переменная – “random” является индексом исходного массива.
  • Как только размер нового массива будет равен десяти, то есть когда мы выбираем 10 различных чисел, то присваиваем переменной – “end” единицу (можно другое число отличное от нуля) и выходим из цикла
    •  

      Я не стал перечислять все 1000 элементов исходного массива, чтобы сократить код.

      На этом у меня все, желаю вам удачи, пока!


Хостинг, которым я пользуюсь: Good-Host


Похожие статьи

Оставить комментарий

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

*

code

Вы можете использовать это HTMLтеги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>