11度热点(11du.cn)汇聚网络热点资讯!

关于我们联系我们

11度热点(11du.cn)汇聚网络热点资讯

当前位置: 主页 > 综合 >

c语言伪随机数(真随机数和伪随机数的区别)

时间:2023-05-24 22:20热力值:来源:NDM编辑:热力哥
伪随机数的规律怎么找 C++|彻底弄清伪随机数与随机数

看以下代码

coutltlt\"RAND_MAX: \"ltltRAND_MAXltltendl//32767,0x7fff//rand函数需要使用srand()函数返回的种子,如果没有调用,系统会默认给1for(int i=1ilt11++i)coutltltrand()ltlt\" \"//41 18467 6334 26500 19169 15724 11478 29358 26962 24464

生成的随机数是0-RAND_MAX之间的随机数。

多次运行以上代码,生成的随机数都是一样的,称为伪随机数,因为其种子始终没有改变。

看以下代码:

srand(14)for(int k=1klt11++k)coutltltrand()%100+1ltlt\" \"

生成的随机数虽然与种子是1的随机数不一样了,但每次运行时,还是相同的一组随机数。

要产生真正的随机数,关键在于要找到一个随机种子,一般的做数是用时间的变化做为随机数的种子。

coutltlt\"距离January 1st 1970 00:00:00 GMT的秒数:\"ltlttime(NULL)ltltendl//距离January 1st 1970 00:00:00 GMT的秒数:1557286190

可以用time(NULL)函数返回的秒数作为随机数的种子:

srand(time(NULL))for(int k=1klt11++k)coutltltrand()ltlt\" \"coutltltendl//530553 13609 10053 4923 31145 13279 14192 26131 32342 6263

如果不想生成0-RAND_MAX,而是0-b内的随机数,怎么办?

利用模数计算,如:

a%b,也就是a/b的余数,在a%b中,b称为模,其计算的结果就是0-b:

//生成0-100的随机数srand(time(NULL))for(int j=1jlt11++j)coutltltrand()%100+1ltlt\" \"//生成100-1000的随机数for(int k=1klt11++k)coutltltrand()%(1000-100+1)+100ltlt\" \"

附整体代码:

#include ltiostreamgt#include ltstdio.hgt#include lttime.hgtusing namespace stdvoid main(){coutltlt\"RAND_MAX: \"ltltRAND_MAXltltendl//32767,0x7fff//rand函数需要使用srand函数返回的种子,如果没有调用,系统会默认给1for(int i=1ilt11++i)coutltltrand()ltlt\" \"coutltltendl//41 18467 6334 26500 19169 15724 11478 29358 26962 24464{srand(14)for(int k=1klt11++k)coutltltrand()%100ltlt\" \"coutltltendl}coutltlt\"距离January 1st 1970 00:00:00 GMT的秒数:\"ltlttime(NULL)ltltendl{srand(time(NULL))for(int k=1klt11++k)coutltltrand()%100ltlt\" \"coutltltendl}//生成0-100的随机数for(int j=1jlt11++j)coutltltrand()%100ltlt\" \"coutltltendl//生成100-1000的随机数for(int k=1klt11++k)coutltltrand()%(1000-100+1)+100ltlt\" \"coutltltendl system(\"pause\")}/*RAND_MAX: 3276741 18467 6334 26500 19169 15724 11478 29358 26962 2446484 25 92 43 87 35 71 71 36 75距离January 1st 1970 00:00:00 GMT的秒数:15572861905 86 72 79 82 0 26 62 9 4069 16 46 73 4 77 67 26 7 3361 304 963 499 595 398 311 206 842 661*/java随机数伪随机数 真随机数和伪随机数的区别

免责声明:本网登载内容出于更直观传递信息之目的。该内容版权归原作者所有,并不代表本网赞同其观点和对其真实性负责。如该内容涉及任何第三方合法权利,请联系本站,我们会及时反馈并处理。

本站推荐



本类导航

大家都在看

推荐标签