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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 31, средняя оценка - 4.84
pro_mary
1 / 1 / 0
Регистрация: 23.03.2009
Сообщений: 100
Завершенные тесты: 1
#1

Random: генерируются одни и те же значения - C++

31.05.2011, 19:05. Просмотров 5540. Ответов 10
Метки нет (Все метки)

Написала программу, в которой нужно использовать генерацию случайных чисел, в итоге при каждом запуске генерируются одни и те же числа. В чем может быть причина, подскажите, пожалуйста. Если кому понадобится, могу выложить код. Спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.05.2011, 19:05
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Random: генерируются одни и те же значения (C++):

Rand: Во всех случаях генерируются одинаковые значения - C++
Всем привет. Имею след. код: #include "stdafx.h" #include <iostream> #include <cstdlib> #include <ctime> class C { ...

Выводяться одни и те же значения - C++
Код записывает значения в обьект (это работает в цикле), puts - выводит разные значения. char * daName; daName...

Почему случайные значения всегда одни и те же? - C++
Дано условие: С помощью генератора случайных чисел смоделировать выбрасывание игральной кости (1 ... 6). Вывести на экран количество...

Выходные значения кода одни и те же при уменьшении шага - C++
Вроде бы при уменьшении значение шага m и точности eps выходные данные должны как - то сходиться лучше, но у меня выдается все время одно и...

Random_shuffle при быстрой работе задает одни и те же значения - C++
Всем привет. Не буду долго объяснять всю задачу, постораюсь кратко, но понятно. Есть массив строк, который я перемешиваю используя...

Random, значения без повторений - C++
Нашел здесь на форуме код для рандома без повторений: #include "stdafx.h" #include <iostream> #include <locale> #include...

10
asics
Freelance
Эксперт С++
2854 / 1789 / 144
Регистрация: 09.09.2010
Сообщений: 3,841
31.05.2011, 19:06 #2
добавь в код -- srand(time(0));
0
m1Rr0r
247 / 230 / 15
Регистрация: 05.02.2010
Сообщений: 3,283
Завершенные тесты: 2
31.05.2011, 19:11 #3
если не помог совет
asics, тогда выкладывай код =)
0
Alexandr93
2 / 2 / 0
Регистрация: 09.11.2010
Сообщений: 65
31.05.2011, 19:15 #4
И добавь библиотеку ctime
0
pro_mary
1 / 1 / 0
Регистрация: 23.03.2009
Сообщений: 100
Завершенные тесты: 1
31.05.2011, 19:47  [ТС] #5
К сожалению, не помогло..
Код:
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
33
34
35
36
37
38
#include "stdafx.h"
#include <iostream>
#include <random>
#include <stdio.h>
#include <ctime>
 
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{
    int n;
    cout << "Enter n:";
    cin >> n;
    double *A = new double [n];
    int *B = new int[n];
 
    for (int i = 0; i < n; i++)
        A[i] = (i+1)*1.73;
    
    tr1::mt19937 eng;
    int l;
    tr1::poisson_distribution<double>poisson(10.5);
    l = poisson(eng);
    cout << "l = " << l << "\n";
 
    for (int i = 0; i < n; i++)
    {
        tr1::poisson_distribution<double>poisson(A[i]);
        B[i] = poisson(eng);
    }
 
    for (int i = 0; i < n; i++)
        cout << A[i] << "     " << B[i] << "\n";
 
    srand(time(0));
 
    return 0;
}
0
asics
Freelance
Эксперт С++
2854 / 1789 / 144
Регистрация: 09.09.2010
Сообщений: 3,841
31.05.2011, 19:50 #6
Пробуй так:
Цитата Сообщение от pro_mary Посмотреть сообщение
C++
1
tr1::mt19937 eng;
заменить на
C++
1
tr1::mt19937 eng(time(0));
1
pro_mary
1 / 1 / 0
Регистрация: 23.03.2009
Сообщений: 100
Завершенные тесты: 1
31.05.2011, 19:50  [ТС] #7
C++
1
2
3
4
5
#include <random>
...
tr1::mt19937 eng;
tr1::poisson_distribution<double> poisson(7.0);
cout << poisson(eng) << endl;
это для генерации случайной величины, распределенной по закону Пуасона.
0
asics
Freelance
Эксперт С++
2854 / 1789 / 144
Регистрация: 09.09.2010
Сообщений: 3,841
31.05.2011, 19:51 #8
pro_mary,
C++
1
tr1::mt19937 eng(time(0));
Не помогло ?
0
pro_mary
1 / 1 / 0
Регистрация: 23.03.2009
Сообщений: 100
Завершенные тесты: 1
31.05.2011, 19:52  [ТС] #9
Ура!! Большое спасибо!!
0
Mogul-kan
23 / 23 / 2
Регистрация: 24.04.2010
Сообщений: 220
31.05.2011, 19:56 #10
Подключить библиотеки #include<time.h> и #include<stdlib.h>.
В самомом начале после main напишите srand(time(NULL));
Потом случайное число генерируется так n=rand()%10+1;
2
asics
Freelance
Эксперт С++
2854 / 1789 / 144
Регистрация: 09.09.2010
Сообщений: 3,841
31.05.2011, 19:58 #11
Mogul-kan, Ты понимаеш что ТС использует не стандартный генератор, а из библиотеки tr1 ?

Добавлено через 32 секунды
И все что ты написал, уже было сказано постами выше.
0
31.05.2011, 19:58
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.05.2011, 19:58
Привет! Вот еще темы с ответами:

Присвоение переменной а значения случайного числа (random) - C++
Здравствуйте. Задача написать программу для проверки знания таблиц умножения. Rand-омом виводятся два числа (a,b) на консоль. Как присвоить...

Random и объекты класса (pseudo random) - C++
Всем привет. Есть класс: typedef unsigned int ui; class Player { private: ui health;

Rand() как именно генерируются эти числа - C++
Функция rand(). Мне для ответа по ОПИ мало сказать что она возвращает псевдослучайные числа от 0 до RAND_MAX. Надо рассказать как именно...

Random генерирует одни и те же значения - C#
вот пример кода: double ran(double a) { Random rand = new Random(); a = rand.NextDouble(); ...


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

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

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