我有简单的随机生成器代码,它使用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中,结果为
使用g ++ via cygwin,结果是
现在使用Desktop Qt 5.9.1 MinGW 32bit在Qt上运行相同的代码,它返回相同的值。
.pro
文件是
QT += core
QT -= gui
CONFIG += c++11
TARGET = Ports
CONFIG += console
CONFIG -= app_bundle
TEMPLATE = app