mt19937返回相同的数字,即使它是种子

时间:2018-01-24 08:37:57

标签: c++ qt c++11

我有简单的随机生成器代码,它使用Windows中的cl和g ++编译器返回不同的数字。奇怪的是,Qt中的相同代码并没有返回不同的数字。代码是

#include <random>
#include <iostream>

class RandGen
{
public:
    RandGen() :  m_generator(m_seeder())
    {
    }

    std::random_device m_seeder;
    std::mt19937 m_generator;

    int getNum()
    {
        std::uniform_int_distribution<> dist(0,5);
        return dist(m_generator);
    }
};


int main()
{
    RandGen rg;

    for(int i(0); i < 5; ++i){
        std::cout << rg.getNum() << " ";
    }
    std::cout << std::endl;

    return 0;
}

在Visual Studio中,结果为

enter image description here

使用g ++ via cygwin,结果是

enter image description here

现在使用Desktop Qt 5.9.1 MinGW 32bit在Qt上运行相同的代码,它返回相同的值。

enter image description here

.pro文件是

QT += core
QT -= gui
CONFIG += c++11
TARGET = Ports
CONFIG += console
CONFIG -= app_bundle
TEMPLATE = app

0 个答案:

没有答案