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

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

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

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

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

Доброго времени суток !
Как генерировать случайное число например в диапазоне от 1 до 52 а потом исключить это число, и генерировать снова но при этом не учитывать старое, а искать новое в этом же диапазоне.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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Эксперт С++
12885 / 7271 / 810
Регистрация: 27.09.2012
Сообщений: 17,970
Записей в блоге: 2
Завершенные тесты: 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Эксперт С++
12885 / 7271 / 810
Регистрация: 27.09.2012
Сообщений: 17,970
Записей в блоге: 2
Завершенные тесты: 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++
C++ Генерация случайных чисел
C++ Генерация случайных чисел
C++ Генерация случайных чисел
Генерация случайных чисел C++

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

Или воспользуйтесь поиском по форуму:
MrGluck
Ворчун
Эксперт CЭксперт С++
6673 / 3854 / 510
Регистрация: 29.11.2010
Сообщений: 10,212
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