Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Maratovich
13 / 17 / 6
Регистрация: 05.09.2012
Сообщений: 210
#1

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

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

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

Генерация случайных чисел
Здравствуйте, появилась такая проблема: при генерации случайного числа...

Генерация случайных чисел
Мне нужно заполнить множество матриц числами 0 или 1. Для этого использую...

Генерация случайных чисел
#include <stdio.h> #include <conio.h> #include <clocale> #include <time.h>...

Генерация случайных чисел
Как в С сгенирировать последовательность случайных чисел от x до y.Например от...

Генерация случайных чисел
Здравствуйте! Мне нужно сгенерировать случайные числа, много и за секунду или...

генерация случайных чисел
полазил по форумам, понял что лучшей конструкцией для ввода случайных чисел...

6
TrueBit
96 / 96 / 47
Регистрация: 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();
}
1
Croessmah
++Ͻ
14158 / 8083 / 1513
Регистрация: 27.09.2012
Сообщений: 19,921
Записей в блоге: 3
Завершенные тесты: 1
14.01.2013, 22:21 #3
Цитата Сообщение от Maratovich Посмотреть сообщение
Как генерировать случайное число например в диапазоне от 1 до 52 а потом исключить это число, и генерировать снова но при этом не учитывать старое, а искать новое в этом же диапазоне.
Способы есть различные. Скорее зависит от конечной задачи, для которой это нужно.
1
SummerRain
327 / 326 / 92
Регистрация: 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");
}
1
Maratovich
13 / 17 / 6
Регистрация: 05.09.2012
Сообщений: 210
14.01.2013, 22:33  [ТС] #5
Спасибо большое вот сижу думаю, почему сам до этого не догадался...
0
Croessmah
++Ͻ
14158 / 8083 / 1513
Регистрация: 27.09.2012
Сообщений: 19,921
Записей в блоге: 3
Завершенные тесты: 1
14.01.2013, 22:46 #6
Цитата Сообщение от SummerRain Посмотреть сообщение
Генерация случайных неповторяющихся чисел (диапазон задаём через N)
может привести к зависанию, если будут генерироваться числа, которые уже есть в массиве

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

Генерация случайных чисел
Помогите пожалуйста с этой программой, я ни как не могу понять как ее зделать....

Генерация случайных чисел
Написать программу, которая должна обеспечить исчисление количества повторений...

Генерация случайных чисел
Вопрос такой: возможно ли при помощи функции random, устроить случайную...

Генерация случайных чисел
Доброго времени суток) Задача состоит в том, чтобы заполнить массив...


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

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

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