Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Общие вопросы по .NET и C# > Случайное число в нескольких диапазоне |
Автор: DrDrag 26.2.2013, 01:24 | ||
Всем привет. Возник такой вопрос. Нужно равновероятно получить число внутри нескольких диапазонов. Например есть несколько, заранее неизвестное, кол-во разных диапазонов. 5-20, 27-30, 120-199; Хранятся в листе структур пар:
Нужно получить случайное число в этих диапазонах. У меня есть 2 решения. Первое - создать лист byte и поместить туда все значения от min до max. Потом взять случайное число от 0 до количества элементов в листе и по индексу взять значение. Второе - в while(true) // позор ли мне? напоминает обезьянью сортировку получать случайное число, потом проверять, попало ли оно хоть в 1 диапазон. Если попало - брейк. Оба решения кажутся, как бы сказать, кривыми. Как сделать что бы было красиво? = ) |
Автор: infarch 26.2.2013, 10:57 |
Может быть так: Сначала оптимизируем список диапазонов на предмет перекрывающихся (если такое возможно). Потом случайно выбираем диапазон, а уже в нем случайно число. |
Автор: DarkDragon 11.3.2013, 13:44 |
Мне кажется первый метод приемлимым, но только не список а memory stream, заполнить его последовательно числами из диапазонов (отсеивая дублирующие значения), и получать лишь случайный индекс (в данном контексте смещение). Ну и метод двойного случайного числа описанный infarch |
Автор: Machaon 9.4.2013, 04:10 | ||
Вот набросал пару строчек :
|