|
|
|||||
[+1 13.07.11]
[++1 13.07.11] Регистрация: Dec 2009
Сообщений: 42
|
Случайное число с исключением
Доброго дня.
Мне нужно получить случайное число в заданном диапазоне (ес-но функцией), но с исключением какого-либо числа, т.е. например любое число от 1 до 10, но только не 5. (1,2,3,4,6,7,8,9,10)... Имеется переменная в которой храниттся число исключение - idgame:int, также имеется функция рандома которая выдает случайное число в заданном диапазоне, а как сделать то что мне нужно - прошу помочь. Спасибо. Функция рандома: |
|
|||||
Первый, плохой, но рабочий вариант:
public function random(min:Number, max:Number, idgame:int):Number { var result:int = Math.round(Math.random() * (max - min)) + min; while (result == idgame) result = Math.round(Math.random() * (max - min)) + min; return result; } Еще вариант: public function random(min:Number, max:Number, idgame:int):Number { var arr:Array = []; for (var i:int = min; i <= max; i++) if (i != idgame) arr.push(i); var len = arr.length; return arr[int(Math.random() * len)]; } Ждем более изящных решений |
|
|||||
[+1 13.07.11]
[++1 13.07.11] Регистрация: Dec 2009
Сообщений: 42
|
Спасибо большое
|
|
|||||
Регистрация: Jun 2011
Сообщений: 31
|
Переменная mod для того, чтобы точно не нарваться на исключаемое число. Для целых исключаемых подойдет 1, для вещественных можно и меньше, 0.1 например.
|
|
|||||
блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
|
public function randomNum(min:Number, max:Number, ex:Number):Number { var ret:Number = Math.random() * (max - min) + min; if(ret == ex) ret = max; return ret; } public function randomInt(min:int, max:int, ex:int):Number { var ret:int = int(Math.random() * (max - min) + min); if(ret >= ex) ++ret; return ret; }
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают. Последний раз редактировалось -De-; 29.01.2012 в 11:57. |
|
|||||
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
-De-, TanaTiX – А что, ситуации когда ex == max исторически исключаются?)
__________________
Reality.getBounds(this); Последний раз редактировалось Wolsh; 29.01.2012 в 08:01. |
Часовой пояс GMT +4, время: 13:22. |
|
« Предыдущая тема | Следующая тема » |
Теги |
random |
Опции темы | |
Опции просмотра | |
|
|