Когда я запускаю свою функцию, мои значения x
и y
остаются неизменными при каждом запуске. Я не уверен, неправильно ли я использую default_random_engine или нет. Как я могу получить свои значения x
и y
, используя dist(engine)
для рандомизации и не получать один и тот же результат при каждом выполнении программы?
default_random_engine не рандомизирует значения для меня
Ответы (1)
«Семя» — это то, что обеспечивает генератор псевдочисел своей «случайностью». Если вы инициализируете его одним и тем же начальным числом, вы получите тот же «случайный» шаблон.
Здесь вы, вероятно, все время передаете одно и то же семя.
Возможно, вам следует определить свою функцию следующим образом:
long double fn( long reps, default_random_engine & engine )
Объявите один экземпляр вашего генератора случайных чисел при запуске вашей программы и задайте для него один раз значение, которое всегда будет другим при запуске вашей программы (например, системное время ). Затем передайте генератор в любые функции, требующие генерации случайных чисел.
person
paddy
schedule
30.09.2013
Итак, если бы я хотел передать семена 1-10 через генератор, как бы я это сделал?
- person Tyler; 01.10.2013
Может быть, я неправильно понял ваш вопрос? Сначала казалось, что вам не нужно одно и то же семя. Вы говорите, что получаете одну и ту же последовательность независимо от того, какое семя вы используете? Или вы просто хотите использовать 10 разных семян, но чтобы они каждый раз менялись при запуске программы?
- person paddy; 01.10.2013
Извините, возможно, было неясно. Я хочу использовать 10 разных семян, конкретно 1-10.
- person Tyler; 01.10.2013
Вы сказали: Как я могу сделать так, чтобы мои значения x и y рандомизировались, а вывод не был одинаковым при каждом выполнении программы?. Ответ заключается в том, чтобы каждый раз использовать разные семена. Если вы заставите свою программу использовать только начальные числа 1-10 (например,
seed = 1 + (time(0) % 10);
), ваша программа будет иметь только 10 уникальных случайных последовательностей.
- person paddy; 01.10.2013
default_random_engine
, его включение в стандарт было ошибкой. Вместо этого используйтеmt19937
илиmt19937_64
. - person Konrad Rudolph   schedule 01.10.2013