10 / 10 / 2
Регистрация: 16.08.2009
Сообщений: 418
|
||||||
1 | ||||||
Как исключить определенные числа из диапазона для функции rand()06.03.2010, 06:35. Показов 14809. Ответов 8
Метки нет Все метки)
(
Использую функцию rand для получения случайных значений
в диапазоне от 1 до 52
Это можно сделать с условием если значение rcard будет равно 6 или 12, то функция rand вызываеться еще раз, но это сильно замедляет программу, можно как то сразу задать дипазон от 1 до 52 без 6 и 12?
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
|
|
06.03.2010, 06:35 | |
Ответы с готовыми решениями:
8
Как исключить повторение цифр в rand()
Рандом: как исключить попадание в определенные значения?
|
2342 / 498 / 22
Регистрация: 01.04.2009
Сообщений: 2,200
|
|||||||||||
06.03.2010, 08:35 | 2 | ||||||||||
![]() упс! в другом порядке.
0
|
10 / 10 / 2
Регистрация: 16.08.2009
Сообщений: 418
|
|
06.03.2010, 09:21 [ТС] | 3 |
Patch
Ну так а если rcard будет равно максимальному и если прибавит еще единицу оно выйдет за рамки И еще количество чисел которые надо исключить в реальной проге намного больше двух, и они задаються каждый раз разные.
0
|
2342 / 498 / 22
Регистрация: 01.04.2009
Сообщений: 2,200
|
||||||
06.03.2010, 10:04 | 4 | |||||
обратите внимание, что я взял диапазон
![]() в реальной проге делается отсортированный по возрастанию массив исключений, диапазон чисел для rand считается, как нужное максимальное минус число исключений. дальше, после вычисления rand, тупо сканируется массив, пока значение, возвращенное rand не будет меньше числа в массиве. и для каждого числа массива, меньшего, чем результат rand, этот результат увеличивается на 1. проверь на листочке алгоритм.
1
|
10 / 10 / 2
Регистрация: 16.08.2009
Сообщений: 418
|
|||||||||||
06.03.2010, 10:27 [ТС] | 5 | ||||||||||
Patch,
Ну скажем есть массив исключений отсортированный по возрастанию
0
|
2342 / 498 / 22
Регистрация: 01.04.2009
Сообщений: 2,200
|
|
06.03.2010, 10:36 | 6 |
возьми листок и посчитай.
пример с твоими тремя числами: 2,6,32 допустим, выпадает Rand = 2. по алгоритму... получаем результат +1, т.е. число 3. выпадает 5 - получаем 6. выпадает 32 - получаем 35. выпадает 49 - получаем 52. это то, что ты и хотел получить.
0
|
![]() 1671 / 1043 / 174
Регистрация: 27.09.2009
Сообщений: 1,945
|
||||||
06.03.2010, 10:38 | 7 | |||||
Если диапазон допустимых чисел относительно невелик, то проще и быстрее сделать массив допустимых значений и выбирать из него значение по индексу, сгенерированному при помощи rand.
1
|
2342 / 498 / 22
Регистрация: 01.04.2009
Сообщений: 2,200
|
||||||
06.03.2010, 10:47 | 8 | |||||
вот тебе функция
1
|
06.03.2010, 11:06 | 9 | ||||||||||
предлагаю немного другой выход:
забиваешь в масив исключения (желательно по возростанию) Int massiv{2,6,32}; int len=3;//длинна масива исключений если нужно генерить число до от 1 до 52
но если rcard==2 то rcard=52-0;(52) rcard==6 то rcard=52-1;(51) rcard==32 то rcard=52-2;(50) все! или вот тебе функция Patch:
1
|
06.03.2010, 11:06 | |
Помогаю со студенческими работами здесь
9
Как исключить число из диапазона в Random?
Как выбрать из диапазона, определенные словосочетания Можно ли задать вероятность выпадения числа в функции Rand();
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |