[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Генерация числа из диапазона,кроме некоторых чисел
InfyQ
Помогите с проблемой: Требуется сгенерировать случайное число кроме некоторых чисел. Например, число из диапазона 1-30, кроме 8, 13, 18...
Можно, конечно, сделать ряд условий и вызывать функцию rand пока не будут удовлетворены эти условия.. НО.. Может получиться такая ситуация, что потребуется исключить числа, например 1-29 (т.е. сгенерировать число 30). Это ж придётся вызывать кучу раз функцию.. Не оптимально.. Подскажите, пожалуйста, как ещё можно реализовать. Заранее благодарен))



Спустя 19 минут, 32 секунды (22.09.2011 - 16:34) m4a1fox написал(а):
Наверно не зная точно в будущем какие числа придется исключать из диапазона, программа это так же не узнает! Можно через массив, ключи массива или значения. А потом просто добавлять в них числа. Или написать еще одну функцию-форму, ты добавляешь в нее числа - она записывает их в массив! Наверно так!

Спустя 2 минуты, 19 секунд (22.09.2011 - 16:36) Winston написал(а):
Можно свою ф-ю написать
function myRand()
{
$except = Array(8, 13, 18); // Числа исключения
$array = range(1, 30); // Массив с числами 1 - 30
$array = array_diff($array, $except); // Удаляем числа которые в исключениях
return $array[array_rand($array)]; // Возвращаем случайное число
}

echo myRand();

Спустя 14 часов, 39 минут, 50 секунд (23.09.2011 - 07:16) InfyQ написал(а):
Угумс, вчера ночью так и надумал, что через массивы надо пробовать, а тут уже код почти готовый.. Пасиб всем.. Думаю, что дальше уже сам смогу)))
P.S. Сорри, не могу Карму плюсануть, не хватает постов)) Долбаное огранчение))

Спустя 8 часов, 46 минут, 47 секунд (23.09.2011 - 16:03) inpost написал(а):
$except = array(8,13,18);
while($rand = rand(1,30))
if(in_array($rand,$except))
break;
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.