2013-09-30 3 views
0

Когда я запускаю свою функцию, значения x и y остаются неизменными при каждом запуске. Я не уверен, что неправильно использую default_random_engine или нет. Как я могу получить значения x и y с использованием dist(engine) для рандомизации и не получения одинакового результата каждый раз, когда программа выполняется?default_random_engine не является случайным значением для меня

+2

Забыть о 'default_random_engine', его включение в стандарт было ошибкой. Вместо этого используйте 'mt19937' или' mt19937_64'. –

+0

Показать код. Без этого невозможно сказать, неправильно ли вы используете default_random_engine или нет. –

ответ

0

«Семя» - это нечто, обеспечивающее генератор псевдослучай, с его «случайностью». Если вы инициализируете его одним и тем же семенем, вы получите тот же «случайный» шаблон.

Здесь вы, вероятно, все время проходите одно и то же семя.

Может быть, вы должны определить свою функцию, как это вместо:

long double fn(long reps, default_random_engine & engine) 

Объявите один экземпляр вашего генератора случайных чисел при запуске программы, и семя его раз со значением, которое всегда будет отличаться когда запускается ваша программа (например системное время). Затем передайте генератор в любые функции, требующие генерации случайных чисел.

+0

Итак, если бы я хотел передать семена 1-10 через генератор, как бы я это сделал? – Tyler

+0

Возможно, я неправильно понял ваш вопрос? Первоначально он выглядел так, будто вы * не хотели того же семени. Вы говорите, что получаете одну и ту же последовательность независимо от того, какое семя вы используете? Или вы просто хотите использовать 10 разных семян, но чтобы они были разными при каждом запуске программы? – paddy

+0

Извините, может быть, неясно. Я хочу использовать 10 разных семян, в частности 1-10. – Tyler