random_device真随机数最简单应用

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

如果没有看懂,可以去看以下讲解

C++11随机数的正确打开方式

mt19937是什么鬼?

或者查看官方文档

random_device

mt19937

如果还没有看懂,建议使用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;
}

猜你喜欢

转载自blog.csdn.net/jgjfror/article/details/113790271