首页 > 解决方案 > 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;
}  

打印出来的数字好像是一样的,怎么设置种子根据时间生成随机数呢?

标签: c++11random

解决方案


您只需播种一次,而不是每次调用该函数时。然后你会得到不同的值。我将把功能移动到来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;
}

观看现场演示


推荐阅读