下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、用rand()和srand()产生伪随机数的方法总结标准库(被包含于中)提供两个帮助生成伪随机数的函数:函数一:int rand(void);从srand (seed)中指定的seed开始,返回一个seed, RAND_MAX(0x7fff))间的随机整数。函数二:void srand(unsigned seed);参数seed是rand()的种子,用来初始化rand()的起始值。可以认为rand()在每次被调用的时候,它会查看:1) 如果用户在此之前调用过srand(seed),给seed指定了一个值,那么它会自动调用srand(seed)一次来初始化它的起始值。2) 如果用户在此之前没有调
2、用过srand(seed),它会自动调用srand(1)一次。根据上面的第一点我们可以得出:1) 如果希望rand()在每次程序运行时产生的值都不一样,必须给srand(seed)中的seed一个变值,这个变值必须在每次程序运行时都不一样(比如到目前为止流逝的时间)。2) 否则,如果给seed指定的是一个定值,那么每次程序运行时rand()产生的值都会一样,虽然这个值会是seed, RAND_MAX(0x7fff))之间的一个随机取得的值。3) 如果在调用rand()之前没有调用过srand(seed),效果将和调用了srand(1)再调用rand()一样(1也是一个定值)。举几个例子,假设我
3、们要取得06之间的随机整数(不含6本身):例一,不指定seed:for(int i=0;i10;i+) ran_num=rand() % 6;coutran_num ;每次运行都将输出:5 5 4 4 5 4 0 0 4 2例二,指定seed为定值1:srand(1);for(int i=0;i10;i+) ran_num=rand() % 6;coutran_num ;每次运行都将输出:5 5 4 4 5 4 0 0 4 2跟例子一的结果完全一样。例三,指定seed为定值6:srand(6);for(int i=0;i10;i+) ran_num=rand() % 6;coutran_num
4、 ;每次运行都将输出:4 1 5 1 4 3 4 4 2 2随机值也是在0,6)之间,随得的值跟srand(1)不同,但是每次运行的结果都相同。例四,指定seed为当前系统流逝了的时间(单位为秒):time_t time(0):#include /srand(unsigned)time(0);for(int i=0;i10;i+) ran_num=rand() % 6;coutran_num ;第一次运行时输出:0 1 5 4 5 0 2 3 4 2第二次:3 2 3 0 3 5 5 2 2 3总之,每次运行结果将不一样,因为每次启动程序的时刻都不同(间隔须大于1秒?,见下)。关于time_t
5、 time(0):time_t被定义为长整型,它返回从1970年1月1日零时零分零秒到目前为止所经过的时间,单位为秒。比如假设输出:couttime(0);值约为1169174701,约等于37(年)乘365(天)乘24(小时)乘3600(秒)(月日没算)。另外,关于ran_num = rand() % 6,将rand()的返回值与6求模是必须的,这样才能确保目的随机数落在0,6)之间,否则rand()的返回值本身可能是很巨大的。一个通用的公式是:要取得a,b)之间的随机整数,使用(rand() % (b-a))+ a (结果值将含a不含b)。在a为0的情况下,简写为rand() % b。最后
6、,关于伪随机浮点数:用rand() / double(RAND_MAX)可以取得01之间的浮点数(注意,不同于整型时候的公式,是除以,不是求模),举例:double ran_numf=0.0;srand(unsigned)time(0);for(int i=0;i10;i+) ran_numf = rand() / (double)(RAND_MAX);coutran_numf ;运行结果为:0.716636,0.457725,等10个01之间的浮点数,每次结果都不同。如果想取更大范围的随机浮点数,比如110,可以将rand() /(double)(RAND_MAX) 改为 rand() /(double)(RAND_MA
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年万安县在外在编教师返乡工作笔试备考试题及答案详解
- 2026重庆沙坪坝区信访办招1人笔试备考试题及答案详解
- 2026湖南大学研究生院劳务派遣岗位招聘1人笔试备考题库及答案详解
- 四川交通职业技术学院2026年上半年公开考核招聘工作人员(36人)笔试备考题库及答案详解
- 2026华电抽蓄工程管理(成都)有限公司校园招聘(第三批)笔试参考题库及答案详解
- 线上创新项目投资合同
- 家政月嫂工作协议范本2026
- 2026年齐齐哈尔克东县公开招聘社区工作者16人笔试参考题库及答案详解
- 2026浙江宁波市知识产权协会招聘劳务派遣工作人员4人笔试参考题库及答案详解
- 2026年周口市投资集团有限公司及下属子公司招聘工作人员5名笔试备考试题及答案详解
- 2026内蒙古乌海市国创数字产业发展有限责任公司招聘15人考试备考题库及答案解析
- 2026年广东教师公需课《人工智能赋能制造业高质量发展》习题及答案
- 2024 全球6G技术大会 -10.0O 正交时频空方案(OTFS)白皮书0409
- SCARA工业机器人手臂设计
- 避雷器检修(接触网技能培训课件)
- 国际航运管理习题及答案
- 铁塔外市电引入施工组织方案(业务能力及服务水平)
- 呼吸机相关性肺炎诊断、预防和治疗指南(2013年)
- GB/T 1112-2012键槽铣刀
- 低温固定储罐培训课件
- 三防漆外观检验标准
评论
0/150
提交评论