У меня есть вложенная система, как описано в псевдокоде ниже (часть алгоритма случайного взвешенного большинства):
function1() {
//for 100 iterations:
function2()
// grab logistics
}
function2() {
// create a random seed/generator
random_device rd;
mt19937 gen(rd);
//for 1000 iterations:
function3(gen);
}
function3(gen) {
// grab number from uniform_real_distribution using gen
// then use that number against differing weights
// such that higher weight gets more territory in the uniform distribution for its desired outcome
// that is in a system with weights (1, 1/2) distributed over a uniform distribution (0,1)
// outcome of weight 1 happens if dist lands (0,.6666) and outcome of weight 2 if dist lands (.6666, 1)
}
В приведенном выше примереiform_real_distribution генерирует случайные числа, но function1 всегда заканчивается точно таким же результатом.
Однако, когда я запускаю эту функцию, она всегда будет получать одинаковые точные результаты в каждой итерации, даже если две другие функции должны быть случайными. Еще хуже, если я заменю генератор с чего-то вроде mt19937 на ranlux48, система будет получать одинаковые результаты на каждой итерации, но этот точный результат будет отличаться от того, который получил mt19937, что означает, что все, что я делаю, не случайно - зависит только от генератора.
Мне нужно руководство, как это исправить, чтобы у меня были действительно случайные результаты.
Где я должен поместить gen и rd? Должен ли я даже использовать равномерное реальное распределение?
Если я создаю gen в function3 каждый раз, когда она вызывается, я все равно получаю неслучайные результаты, на самом делеiform_real_distribution генерирует точно одно и то же значение каждый раз