当前位置:  开发笔记 > 编程语言 > 正文

如何在不使用时间作为种子的情况下在C++中生成随机数

如何解决《如何在不使用时间作为种子的情况下在C++中生成随机数》经验,为你挑选了1个好方法。

我的程序应该生成一个固定最大值为9999的随机数.这些数字用于创建对象.现在问题是当使用时间作为种子时,如果我一个接一个地创建两个对象,则将使用相同的数字创建两个对象(因为在该过程中时间没有改变).

我怎样才能更有效地做到这一点,以便每次运行程序时都可以生成一个不同的随机数?



1> oleksii..:

关键是 - 只创建一个随机对象(或其状态),然后重复使用它来获取下一个值.这种方法通常用于其他语言,例如Java,C#,Python.

对于较旧的C风格示例,请参阅rand,这是您感兴趣的位

//initialize random seed ONCE
srand (time(NULL));

// call MANY TIMES for next value
rand();
rand();
rand();

与C++ 11相同的想法,例如具有均匀分布

// Setup ONCE
std::random_device rd;
std::mt19937 gen(rd());
std::uniform_int_distribution<> dis(1, 9999);

// Call MANY TIMES to get next random number 
dis(gen);
dis(gen);
dis(gen);

推荐阅读
手机用户2402851335
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有