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

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

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

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

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

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

Генерация случайных чисел - C++
Вопрос такой: возможно ли при помощи функции random, устроить случайную генерацию одного из двух чисел? Например мне нужны числа 2 и 4.

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

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

Генерация случайных чисел - C++
Здравствуйте, появилась такая проблема: при генерации случайного числа функцией rand(); мне нужно сгенерировать 5 случайных чисел, но...

Генерация случайных чисел - C++
#include <stdio.h> #include <conio.h> #include <clocale> #include <time.h> #include <stdlib.h> using namespace std; int main ()...

генерация случайных чисел - C++
Написать программу, которая должна обеспечить исчисление количества повторений заданного числа по модулю 100. Характеристика должна быть...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
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Эксперт С++
13139 / 7402 / 829
Регистрация: 27.09.2012
Сообщений: 18,243
Записей в блоге: 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Эксперт С++
13139 / 7402 / 829
Регистрация: 27.09.2012
Сообщений: 18,243
Записей в блоге: 3
Завершенные тесты: 1
14.01.2013, 22:46 #6
Цитата Сообщение от SummerRain Посмотреть сообщение
Генерация случайных неповторяющихся чисел (диапазон задаём через N)
может привести к зависанию, если будут генерироваться числа, которые уже есть в массиве

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

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

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

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

Генерация случайных чисел - C++
Для генерации случайных чисел использую выражение: x = rand() % 4; Библиотеку &lt;cstdlib&gt; компилятор подключать не требует (VS12). ...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
14.01.2013, 23:30
Ответ Создать тему
Опции темы

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