mardi 5 juillet 2016

c++ random engines not really random

I'm playing a bit with c++ random engines, and something upsets me. Having noticed that the values I had were roughly of the same order, I did the following test:

#include <random>
#include <functional>
#include <iostream>

int main()
{
    auto res = std::random_device()();
    std::ranlux24 generator(res);
    std::uniform_int_distribution<uint32_t> distribution;
    auto roll = std::bind(distribution, generator);


    for(int j = 0; j < 30; ++j)
    { 
        double ssum = 0;
        for(int i = 0; i< 300; ++i)
        {
            ssum += std::log10(roll());
        }
        std::cout << ssum / 300. << std::endl;
    }
    return 0;
}

and the values I printed were all about 9.2 looking more like a normal distribution, whatever the engine I used. Is there something I have not understood correctly? Thanks, Guillaume




Aucun commentaire:

Enregistrer un commentaire