Часто бывает нужно сгенерировать определенное количество уникальных чисел в заданном интервале.
Это можно сделать так:

// стартовая конфигурация:
$from = 1; // минимальное число интервала
$to = 100; // максимальное число интервала
$num = 5; // количество чисел в результирующем наборе
 
$res = array(); // массив для хранения результирующего набора
// запускаем "бесконечный" цикл, в условии присваиваем случайное число
while($i = rand($from, $to)) {
    // если числа еще нет в результирующем массиве, то добавляем его туда
    if (! in_array($i, $res) ) $res[] = $i;
    // если в массиве достаточно чисел, то прерываем цикл
    if (count($res) == $num) break;
}
 
// смотрим что получилось в массиве
var_dump($res);

А как бы вы сделали лучше/быстрее/оптимальнее?