关于随机种子的问题
程序代码:
#include <iostream> #include <vector> #include <ctime> #include <string> #include <algorithm> #include <random> using namespace std; class A{ public: static string getName(); }; string A::getName(){ vector<string> v1{ "张","王", "李", "赵", "周", "吴", "郑", "王", "安", "高" }; vector<string> v2{ "小","晓", "明", "月", "佳", "志", "其", "世", "玉", "丽" }; vector<string> v3{ "明","新", "锋", "", "林", "红", "艳", "", "强", "" }; vector<int> v{ 0,1,2,3,4,5,6,7,8,9 }; random_device rd; mt19937 g(rd()); shuffle(v.begin(), v.end(), g); return v1[v[0]] + v2[v[1]] + v3[v[2]]; } int main() { for (int i = 0; i < 20; i++) { cout << A::getName() << endl; } system("pause"); return 0; }
此代码段在vc下可以正确获得20个随机中文名
可能的输出:
程序代码:
/* 赵晓强 张世强 王世明 王世 周小新 安志新 李佳 吴月明 周明强 赵佳锋 张世林 赵志艳 赵明强 吴明林 周晓红 郑志锋 高其红 张晓锋 周晓 吴玉 */
在mingw下,20个结果全部一样。
我尝试将
random_device rd;
mt19937 g(rd());
更改为
std::mt19937 g(time(NULL));
但问题没有得到解决,请问mingw下应该如何设置随机数种子才能解决这个问题,谢谢