c++11 - c ++随机设置种子失败
问题描述
我正在尝试将种子设置为 c++ std::default_random_engine:
#include<random>
#include<time.h>
#include<iostream>
using namespace std;
void print_rand();
int main() {
for (int i{0}; i < 20; ++i) {
print_rand();
}
return 0;
}
void print_rand() {
default_random_engine e;
e.seed(time(0));
cout << e() << endl;
}
打印出来的数字好像是一样的,怎么设置种子根据时间生成随机数呢?
解决方案
您只需播种一次,而不是每次调用该函数时。然后你会得到不同的值。我将把功能移动到来main()
演示这一点。
#include<random>
#include<time.h>
#include<iostream>
int main() {
std::default_random_engine e;
e.seed(time(0));
for (int i{0}; i < 20; ++i) {
std::cout << e() << std::endl;
}
return 0;
}
观看现场演示