Периодически возникает необходимость генерации случайных чисел у любого разработчика. Нет ничего проще встроенной функции rand(0,100), которая прекрасно работает. Однако если усложнить задачу…
Есть «коробка» с пронумерованными фишками, например от 0 до 100. И вы их извлекаете из нее, естественно их количество уменьшается. Требуется составить массив для заданного наперед количества фишек в коробке.
Алгоритм решения:
- в цикле генерируем число и добавляем его в массив
- удаляем дубли массива
- проверяем число уникальных элементов массива, если их меньше заданного числа «фишек в коробке» повторяем генерацию
- переписываем ключи от 0 до заданного числа
Генерация случайного числа на PHP:
/* Генерируем случайные числа от 0 до указанного $max и складываем в массив(индекс от 0 до $max-1) */ $max = 1200; while (count($out) < $max) { for ($i=0; $i < ($max-1); $i++) { $list[] = rand( 0,($max-1)); } // удаляем дубли $out = array_unique($list); } // переписываем ключи массива $key = 0; foreach ($out as $value) { $result[$key] = $value; $key++; }