С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
bupal
26 / 26 / 3
Регистрация: 30.03.2010
Сообщений: 378
Записей в блоге: 1
#1

Рандом с исключением - C++

26.11.2011, 14:02. Просмотров 1262. Ответов 3
Метки нет (Все метки)

Добрый день...
подскажите пожалуйста..как сделать целочисленный рандом от 1 до N, но при этом чтобы в нём исключалось заданное число
к примеру если заданное число = 3, а N = 9
то рандом должен проводится в диапазоне 1,2,4,5,6,7,8,9
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.11.2011, 14:02
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Рандом с исключением (C++):

Рандом - C++
Нужна помощь!!!! Вот исходный код: #include "stdafx.h" #include <stdlib.h> #include <iostream> #include <time.h> using...

рандом - C++
Нижно массив заполнить рандомом #include "stdafx.h" #include <iostream> int _tmain(int argc, _TCHAR* argv) { double a...

Рандом - C++
возникла проблема - я создал массив, состоящий из десяти рандомных чисел. Только вот рандомными они становиться не хотят. Правда, на одном...

Рандом - C++
Как проще всего рандомно разыграть для переменной значение 1 или 0....?

рандом - C++
подскажите что не так #include <iostream> #include <string> #include <vector> using namespace std; int main() ...

рандом - C++
подскажите,плз,как рандомно выводить значения типа цццАцц, где ц-цифра, А-буква.

3
Net_Wanderer
235 / 208 / 19
Регистрация: 08.06.2011
Сообщений: 467
26.11.2011, 14:10 #2
C
1
2
3
4
5
6
7
8
9
10
11
int myrand(int low, int high, int exc)
{
    int n;
 
    while ((n = low + rand() % (high - low + 1)) == exc)
        ;
    return n;
}
 
/* ... */
myrand(1, 9, 3)
1
odip
Эксперт С++
7159 / 3221 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
26.11.2011, 17:09 #3
Можно проще
Генерируем случайное число A - от 1 до 8
если получилось 1<=A<=2 то вернем его
если получилось 3<=A<=8 то вернем A+1

В этом случае не будет лишних вызовов rand()

Добавлено через 1 минуту
В общем случае
Пусть заданное число - это B
Генерируем случайное число A от 1 до N-1
Если A<B то вернем A
Если A>=B то вернем A+1
Очевидно что B мы никогда не вернем
0
ForEveR
В астрале
Эксперт С++
7983 / 4742 / 321
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
26.11.2011, 17:54 #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <random>
#include <iostream>
#include <cstdlib>
 
int main()
{
   const int first = 1;
   const int second = 9;
   const int no = 3;
   std::mt19937 gen(time(0));
   std::uniform_int_distribution<> dist(first, second);
   int value = dist(gen);
   while(value == no)
   {
       value = dist(gen);
   }
   std::cout << value << std::endl;
}
1
26.11.2011, 17:54
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.11.2011, 17:54
Привет! Вот еще темы с ответами:

Узнать, что программа вылетала с необработанным исключением - C++
Как это сделать? Она все еще висит в процессах, и простым их мониторнгом не отделаться

Очередь с приоритетным исключением на основе односвязного списка - C++
Реализовать очередь с приоритетным исключением на основе односвязного списка. Для этого разработать следующие функции: 1. Помещение...

повторить введенные символы, за исключением десятичных символов - C++
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;string&gt; int _tmain(int argc, _TCHAR* argv) { setlocale(LC_ALL, &quot;Russian&quot;); ...

Не используя стандартных функций за исключением abs вычислить - C++
Дан одномерный целочисленный массив А размерностью N . Определить количество чисел в наиболее длинной последовательности из подряд идущих...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.