C++random库多次生成的随机数一样解决方法

问题:

使用random库来生成随机数,代码如下:

#include 
#include 
using namespace std;

int main(){
    random_device rd;
    mt19937 g(rd());
    for (int n = 0; n < 10; ++n)
    {
        cout << g() << " ";
    }
    return 0;
}

在windows下运行,发生每次生成的结果都一样,无法实现随机数

C++random库多次生成的随机数一样解决方法_第1张图片

但把同样的代码放到linux下运行,则每次生成的结果却不一样,即成功生成不同随机数。换了另一条电脑试验也是相同的结果。

解决方法:

windows命令行中输入g++ -v查看编译器版本,发现版本为gcc 8.1.0,然后在linux虚拟机中查看版本,发现是gcc 9.4.0,查阅得知gcc9修复了这个随机数bug。

于是只需要将windows的编译器安装最新版本即可解决问题。

进入mingw下载官网:mingw64下载

C++random库多次生成的随机数一样解决方法_第2张图片

进入github下载地址:

C++random库多次生成的随机数一样解决方法_第3张图片

下载x86_64版本:

C++random库多次生成的随机数一样解决方法_第4张图片

删掉原有的mingw64,将新下载的文件解压并配置环境变量即可。

可看到随机数生成正常:

C++random库多次生成的随机数一样解决方法_第5张图片

你可能感兴趣的:(c++,算法,开发语言)