随机数产生器.doc

随机数产生器.doc

ID:57434501

大小:54.07 KB

页数:10页

时间:2020-08-18

随机数产生器.doc_第1页
随机数产生器.doc_第2页
随机数产生器.doc_第3页
随机数产生器.doc_第4页
随机数产生器.doc_第5页
资源描述:

《随机数产生器.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、算法设计与分析实验报告实验四随机数产生器院系:班级:计算机科学与技术学号:姓名:任课教师:成绩:湘潭大学2016年5月实验四随机数产生器一.实验内容设计一个随机数发生器,可以产生分布在任意整数区间[a,b]的随机数序列。二.实验目的1、掌握线性同余法产生随机数的方法; 2、了解计算机中的随机数是如何产生的,以及为什么将随机数称为伪随机数。 三.算法描述 //随机数类Constunsignedlongmaxshort=65536L;Constunsignedlongmultiplier=1194211693L;

2、Constunsignedlongadder=12345L;ClassRandomNumber{private://当前种子unsignedlongrandSeed;Public:RandomNumber(unsignedlongs=0);//构造函数,默认值0表示由系统自动产生种子unsignedshortRandom(unsignedlongn);//产生0:n-1之间的随机整数DoublefRandom(void);//产生[0,1)之间的随机实数};9函数Random在每次计算时用线性同余式计算新的种

3、子randSeed。它的高16位随机性较好。将randSeed右移16位得到一个0~65535之间的随机整数,然后再将此随机整数映射到0~(n-1)范围内。对于函数fRandom,先用函数Random(maxshort)产生一个0~(maxshort-1)之间的整型随机序列,将每个整型随机数除以maxshort,就得到[0,1)区间中的随机实数。RandomNumber::RandomNumber(unsignedlongs)//产生种子{If(s==0)randSeed=time(0);//用系统时间产生种

4、子ElserandSeed=s;//由用户提供种子}UnsignedshortRandomNumber::Random(unsignedlongn)//产生0:n-1之间的随机整数{randSeed=multiplier*randSeed+adder;Return(unsignedshort)((randSeed>>16)%n);}DoubleRandomNumber::fRandom(void)//产生[0,1)之间的随机实数{returnRandom(maxshort)/double(maxshort);

5、}四.算法实现1.数据结构及函数说明 线性同余法产生伪随机数,由线性同余法产生的随机序列a1,a2,....,an,...满足a0=dan=(b*An-1+c)modmn=1,2,...9式中b>=0,c>=0,m>=0。d为该随机序列的种子。建立一个随机数类RandomNumber。该类包含一个需要由用户初始化的种子randSeed。给定初始种子后,即可产生相应的随机序列。种子randSeed是一个无符号整型数,可由用户选定也可用系统时间自动产生。函数Random的输入参数n<=65536是一个无符号整数型

6、,它返回0到(n-1)范围内的一个随机整数。函数fRandom返回[0,1)内的一个随机实数。函数Random的输入参数n<=65536是一个无符号整数型,它返回0到(n-1)范围内的一个随机整数。函数fRandom返回[0,1)内的一个随机实数。1.源程序代码#include#includeintd;longMy_Rand(longa,longc,longm){returnd=(a*d+c)%m;}longgcd1(longm,longn){longr;while((r=m

7、%n)!=0){m=n;n=r;}returnn;}9longgcd(longm){longi=2;while(gcd1(i,m)!=1)i++;returni;}voidmain(){doublestart,finish;start=clock();longa,c,m,R;inti,k;intx,y;m=10007;a=gcd(m);c=33;d=time(0);printf("随机数的范围:");scanf("%d%d",&x,&y);printf("随机数的个数:");scanf("%d",&k);fo

8、r(i=0;ix)printf("%d",R);if(i%10>=9)printf("");}finish=clock();printf("所需时间:%fms",(finish-start));}五.程序运行结果分别在不同范围内产生不同个数的随机数,运行结果如截图所示:9六.实验结果分析第一个截图中产生100个1到1000的随机数所需时间

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。