Форум программистов, компьютерный форум CyberForum.ru

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

Войти
Регистрация
Восстановить пароль
 
Maratovich
13 / 17 / 1
Регистрация: 05.09.2012
Сообщений: 210
#1

Генерация случайных чисел - C++

14.01.2013, 22:05. Просмотров 835. Ответов 6
Метки нет (Все метки)

Доброго времени суток !
Как генерировать случайное число например в диапазоне от 1 до 52 а потом исключить это число, и генерировать снова но при этом не учитывать старое, а искать новое в этом же диапазоне.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.01.2013, 22:05     Генерация случайных чисел
Посмотрите здесь:

Генерация случайных чисел - C++
Подскажите пожалуйста правильно ли я осуществил перевод строк из С в С++, сомневаюсь С - randomize(); С++ - srand(NULL); С ...

генерация случайных чисел - C++
полазил по форумам, понял что лучшей конструкцией для ввода случайных чисел является: srand(time(NULL)); ... int r =...

Генерация случайных чисел в диапазоне 0 - 1 - C++
Привет. Прошу помочь с рандомными числами. Нужны числа от 0 или 1

генерация случайных чисел в linux - C++
randomize(); int a; a=random(100); пишет, что нет декларации randomize() в этой области видимости, хотя stdlib.h я подключил ...

Генерация случайных чисел (rand () % 6) - C++
Приветствую всех. Изучаю "С" с нуля, дошел до генерации случайных чисел. С генерацией все ясно, не могу понять только зачем здесь взятие...

Генерация уникальных случайных чисел - C++
Приветствую. Допустим есть диапазон от 0 до 9. Как сгенерировать число так, чтобы за 10 генераций, это случайное число не было похожим на...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
TrueBit
95 / 95 / 12
Регистрация: 19.11.2012
Сообщений: 195
14.01.2013, 22:20     Генерация случайных чисел #2
Генерация двух разных целочисленных значений из промежутка [1,52]
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
#include <ctime>
using namespace std;
int main()
{
    srand((unsigned)time(NULL));
    int old_num=(1+rand()%52);
    int new_num;
    do {
        new_num=(1+rand()%52);
    } while(new_num==old_num);
    cout << old_num << " " << new_num;
    getchar();
}
Генерация 10 разных, так, что соседние числа не повторяются(промежуток [1,52]):
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <ctime>
using namespace std;
int main()
{
    srand((unsigned)time(NULL));
    int n=10;
    int old_num=(1+rand()%52);
    int new_num;
    for(int i=0;i<n;i++) {
        do {
            new_num=(1+rand()%52);
        } while(new_num==old_num);
        cout << new_num << " ";
        old_num=new_num;
    }
    getchar();
}
Croessmah
Модератор
Эксперт CЭксперт С++
13045 / 7308 / 814
Регистрация: 27.09.2012
Сообщений: 18,041
Записей в блоге: 3
Завершенные тесты: 1
14.01.2013, 22:21     Генерация случайных чисел #3
Цитата Сообщение от Maratovich Посмотреть сообщение
Как генерировать случайное число например в диапазоне от 1 до 52 а потом исключить это число, и генерировать снова но при этом не учитывать старое, а искать новое в этом же диапазоне.
Способы есть различные. Скорее зависит от конечной задачи, для которой это нужно.
SummerRain
326 / 325 / 17
Регистрация: 16.12.2012
Сообщений: 544
14.01.2013, 22:24     Генерация случайных чисел #4
Генерация случайных неповторяющихся чисел (диапазон задаём через N)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include <iostream>
#include <cstdlib>
#include <ctime>
#define N 52
 
using namespace std;
 
void main()
{
    srand((unsigned)time(NULL));
    int mass[N];
 
    for (int i = 0; i < N; ++i)
    {
        mass[i] = rand() % N + 1;
        for (int j = 0; j < i; ++j)
        {       
            if (mass[i] == mass[j])
            {
                --i;
                break;
            }
        }       
    }
 
    for (int i = 0; i < N; ++i)
    {
        cout << mass[i] << endl;
    }
 
    system ("pause");
}
Maratovich
13 / 17 / 1
Регистрация: 05.09.2012
Сообщений: 210
14.01.2013, 22:33  [ТС]     Генерация случайных чисел #5
Спасибо большое вот сижу думаю, почему сам до этого не догадался...
Croessmah
Модератор
Эксперт CЭксперт С++
13045 / 7308 / 814
Регистрация: 27.09.2012
Сообщений: 18,041
Записей в блоге: 3
Завершенные тесты: 1
14.01.2013, 22:46     Генерация случайных чисел #6
Цитата Сообщение от SummerRain Посмотреть сообщение
Генерация случайных неповторяющихся чисел (диапазон задаём через N)
может привести к зависанию, если будут генерироваться числа, которые уже есть в массиве

Добавлено через 1 минуту
Цитата Сообщение от Maratovich Посмотреть сообщение
Спасибо большое вот сижу думаю, почему сам до этого не догадался...
Если Вам нужно просто генерировать все числа из диапазона, то можно заполнить необходимыми числами массив и потом перемешать его в случайном порядке:
C++
1
std::random_shuffle
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.01.2013, 23:30     Генерация случайных чисел
Еще ссылки по теме:

Генерация последовательности случайных чисел - C++
можно ли считать что при генерации последовательности случайных чисел с помощью функций srand и rand при одном и том же начальном значении...

Генерация нескольких случайных чисел в C++ - C++
У меня в цикле несколько раз вызывается функция ниже, но выдает рандомное, но одно и то же число. Как я понял, это происходит потому, что...

Генерация 5ти случайных неодинаковых чисел - C++
Подскажите, как сделать чтобы в диапазоне от 1 до 36 было выбрано 5 случайных чисел, только так чтобы они не повторилиь #include...

Генерация случайных вещественных чисел в диапазоне 0..1 - C++
Какнить можно заставить rand() работать по аналогии в Паскале, т.е. выдавать числа от 0 до 1 (0,000000054, 0,743325235, 0,0052411 и...


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

Или воспользуйтесь поиском по форуму:
MrGluck
Модератор
Эксперт CЭксперт С++
7158 / 4324 / 630
Регистрация: 29.11.2010
Сообщений: 11,744
14.01.2013, 23:30     Генерация случайных чисел #7
std::iota
std::random_shuffle
Yandex
Объявления
14.01.2013, 23:30     Генерация случайных чисел
Ответ Создать тему
Опции темы

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