版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、算法设计与分析实验报告实验四 随机数产生器院系: 班级: 计算机科学与技术学号: 姓名: 任课教师: 成绩:湘 潭 大 学 2016年5月实验四 随机数产生器1. 实验内容设计一个随机数发生器,可以产生分布在任意整数区间a,b的随机数序列。二实验目的1、掌握线性同余法产生随机数的方法; 2、了解计算机中的随机数是如何产生的,以及为什么将随机数称为伪随机数。 三. 算法描述 /随机数类Const unsigned long maxshort = 65536L;Const unsigned long multiplier = 1194211693L;Const uns
2、igned long adder = 12345L;Class RandomNumber private: /当前种子 unsigned long randSeed;Public:RandomNumber(unsigned long s = 0);/构造函数,默认值0表示由系统自动产生种子unsigned short Random(unsigned long n);/产生0:n-1之间的随机整数Double fRandom(void);/产生0,1)之间的随机实数 ;函数Random在每次计算时用线性同余式计算新的种子randSeed。它的高16位随机性较好。将randSeed右移16位得到一
3、个065535之间的随机整数,然后再将此随机整数映射到0(n-1)范围内。对于函数fRandom,先用函数Random(maxshort)产生一个0(maxshort - 1)之间的整型随机序列,将每个整型随机数除以maxshort,就得到0,1)区间中的随机实数。RandomNumber : RandomNumber(unsigned long s ) /产生种子If (s = 0) randSeed = time(0); /用系统时间产生种子Else randSeed = s; /由用户提供种子Unsigned short RandomNumber : Random(unsigned lo
4、ng n)/产生0:n-1之间的随机整数randSeed = multiplier * randSeed + adder;Return (unsigned short )(randSeed >>16)%n);Double RandomNumber : fRandom(void) /产生0,1)之间的随机实数 return Random(maxshort)/double(maxshort);四. 算法实现1. 数据结构及函数说明 线性同余法产生伪随机数,由线性同余法产生的随机序列a1,a2,. ,an,.满足a0 = dan = (b*An-1 + c) mod m n =
5、 1,2,.式中b>=0,c>=0,m>=0。d为该随机序列的种子。建立一个随机数类RandomNumber。该类包含一个需要由用户初始化的种子randSeed。给定初始种子后,即可产生相应的随机序列。种子randSeed是一个无符号整型数,可由用户选定也可用系统时间自动产生。函数Random的输入参数n<=65536是一个无符号整数型,它返回0到(n - 1)范围内的一个随机整数。函数fRandom返回0,1)内的一个随机实数。函数Random的输入参数n<=65536是一个无符号整数型,它返回0到(n - 1)范围内的一个随机整数。函数fRandom返回0,1
6、)内的一个随机实数。2. 源程序代码#include <stdio.h>#include <time.h>int d;long My_Rand(long a,long c,long m) return d=(a*d+c)%m;long gcd1(long m,long n) long r; while(r=m%n)!=0) m=n; n=r; return n;long gcd(long m) long i=2; while(gcd1(i,m)!=1) i+; return i;void main() double start,finish; start=clock()
7、; long a,c,m,R; int i,k; int x,y; m=10007; a=gcd(m); c=33; d=time(0); printf("随机数的范围:"); scanf("%d %d",&x,&y); printf("随机数的个数:"); scanf("%d",&k); for(i=0;i<k;i+) R=rand()%y; if(R>x)printf("%d ",R); if(i%10>=9)printf("n"); finish=clock(); printf("n所需时间:%f msn",(finish-start);5 程序运行结果分别在不同范围内产生不同个数的随机数,运行结果如截图所示:6 实验结果分析第一个截图中产生100个1到1000的随机数所需时间4187ms,第二个截图中产生48个9到999的随机数所需时间13594ms,第三个截图中产生10个1到99的随机数所需时间4194ms,从运行结果初步得出产生随机数
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 三角形的中位线(课件)2025-2026学年北师大版数学八年级下册
- 果树腐烂病刮治操作规范
- 脊柱体态测量分析操作手册
- 异议处理沟通解决指南
- 玉米种子纯度检验技术规程
- 职业病防护设施运行维护手册
- 电视制作试题及解析
- 防爆区域动火作业应急处置方案
- 肉牛标准化育肥饲养管理方案
- 国内导游资格证题库及答案
- 中远海运集团社招笔试题
- 成都2025年公安辅警笔试题目及参考答案
- JJG(皖) 138-2026 电动汽车充电设施在线远程检定规程(修订)
- 2026淮北矿业集团校园招聘240人笔试参考题库附带答案详解
- 防汛队伍培训课件
- 算力设施产业图谱研究报告 -2024
- 公共洗手间卫生清洁培训
- 大连软件产业发展战略的深度剖析与对策构建
- 乐队乐手合同范本
- 专题05平面向量(讲义)数学学业水平考试合格考总复习(原卷版)
- 2025广东中山市神湾镇人民政府所属事业单位招聘事业单位人员8人人参考题库及答案详解(真题汇编)
评论
0/150
提交评论