jeudi 18 mars 2021

Why does the C++11 random generator use reference or non-reference parameter has different list?

Can anyone explain why the function foo1 returns the same value?

#include<iostream>
#include<random>
#include<ctime>

using namespace std;

int foo(default_random_engine& random, uniform_int_distribution<unsigned int>& dis1){
    return dis1(random);
}

int foo1(default_random_engine random, uniform_int_distribution<unsigned int> dis1){
    return dis1(random);
}

int main()
{
    default_random_engine engine(static_cast<unsigned int>(time(0)));
    uniform_int_distribution<unsigned int> randomInt(1, 10);

    cout << "Way1:\n";
    for(int i = 0; i < 10; ++i)
        cout<<foo(engine, randomInt)<<' ';
    cout<<endl;
    cout << "Way2:\n";
    for(int i = 0; i < 10; ++i)
        cout<<foo1(engine, randomInt)<<' ';
    cout<<endl;
    return 0;
}

The result is:

Way1:
9 2 5 5 7 7 9 9 6 6
Way2:
7 7 7 7 7 7 7 7 7 7




Aucun commentaire:

Enregistrer un commentaire