c++11提供了random_device,据说是真随机数,不过只有在Linux下是真随机,因为Linux有熵池;在Windows下只是调用了rand_s。( ・´ω`・ )
代码如下
#define random(min,max) (gen()%(max-min+1))+min
#include <random>//随机数
using namespace std;
int main()
{
random_device rd;//随机数发生器
mt19937 gen(rd());//随机数引擎
cout<<random(0,100)<<endl;
}
不过不知为什么,每次打开程序随机数序列都一样,如有特殊需要可以加上头文件,然后把
(gen()%(max-min+1))+min
改为
(gen()*time(NULL)%(max-min+1))+min
如果没有看懂,可以去看以下讲解
或者查看官方文档
如果还没有看懂,建议使用srand()和rand()
#define random(min,max) (rand()%(max-min+1))+min
#include <random>//随机数
using namespace std;
int main()
{
srand(time(NULL));
cout<<random(0,100)<<endl;
}
本文介绍了C++11中的random_device,它在Linux环境下提供真随机数,而在Windows下使用rand_s。示例代码显示了随机数序列的使用,但指出在某些情况下可能需要结合mt19937以获取不同序列。对于不熟悉该主题的读者,推荐了相关教程和官方文档进行深入学习。

1万+

被折叠的 条评论
为什么被折叠?



