Hello! I am trying to pass a seed to several functions, each generating one random number from different distribution, e.g. This does not work, as each iteration (function call) produces the same number. But why? Thank you for your help!
Code:
#include <iostream>
#include <random>
using std::cout;
using std::endl;
typedef std::mt19937 rng_type;
rng_type rng;
auto D(rng_type r, int n)
{
std::uniform_int_distribution<rng_type::result_type> dist(1, n);
rng_type::result_type random_number = dist(r);
return random_number;
}
auto Scatter(rng_type r)
{
std::uniform_real_distribution<rng_type::result_type> dist(0, 1);
rng_type::result_type random_number = dist(r);
return random_number;
}
int main()
{
rng_type::result_type const seedval = std::random_device{}();
rng.seed(seedval);
for(int i = 0; i <= 10; ++i) cout << D(rng, 6) << ", " << Scatter(rng) << endl;
return 0;
}