浅析C语言中的随机数的应用_第1页
浅析C语言中的随机数的应用_第2页
免费预览已结束,剩余3页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、浅析 C+语言中的随机数的应用摘要:该文针对 C+语言中的随机数生成以及使用方 法进行分析和探讨, 主要对各种随机数的生成算法进行设计。在 C+中,随机数的生成主要通过函数文件中的ramt ()和srand ()函数。首先,阐述 rarut ()和 srand ()两种函数 共同的使用方法和模式,并分析了各自的缺点,然后以现实 中的问题和实际的题目为例,通过实际编程来阐释随机数生 成函数的使用方法,实现了不同概率的随机数的产生、不连 续的随机数的产生等方法。关键词:随机数;伪随机数;种子;随机数生成器 中图分类号:TP311 文献标识码: A 文章编号: 1009-3044 ( 2017) 0

2、8-0098-031 概述经过对 C+语言的学习, 笔者发现书中对于随机函数的 使用只是一概而过,没有进行深入的阐释和联想。文献是到 “其实计算机不会产生绝对随机的随机数,只能产生“伪随 机数”。其实绝对随机的随机数只是一种理想的随机数, 计 算机只能生成相对的随机数,即伪随机数。实际上,系统是 将 032767 之间的整数“随意”地排成了一个“随机数表”, 程序第一次调用 rand ()函数是取“随机数表”中的第一个, 第二次调用 rand ()函数是取“随机数表”的第二个,由此 类推。即使我们运行了多次,但都是在同一个系统上,而同 一个系统产生的“随机数表”又始终是相同的,因此每一次 运行

3、的结果都是一样的。 ”现有文献大都集中在介绍随机函 数的用法,本文从实际应用出发,分析和研究各种不同类型 随机数的生成算法,并进行实验分析。2 随机数的生成的原理(C+匡架下)2.1C+中随机数的定义C+语言中使用 cstdlib 中的函数 rand ()进行生成,但 生成的只是伪随机数。因为 rand ()的内部实现是用线性同 余法做成的,生成随机数时,需要指定一个种子,用 srand ()来设置 rand ()产生随机数时的随机数种子,如果每次 srand ()都设相同值,rand ()所产生的随机数值每次就会 一样。通常可以利用 time(0)的返回值或NULL 来当做 seed, 这样

4、可以输出不同的随机数。2.2 随机数随机重现试验 线性同余法产生对随机数是伪随机数,下面进行试验, 测试具体伪随机数的特点。通过图 1 的实验结果,可以发现当给予相同的随机数函 数种子时,他会输出相同的数字,这就是“伪随机数”名字 的来历。为了设计出不同的随机函数,C+引入函数 time (0)(电脑上确切的时间) ,用 time( 0)作为种子,可以实现随机数函数每次的种子都不同,从而产生出不同的随机数,让 数字的产生更加接近随机。2.3 验证伪随机数是否足够随机的实验通过图 2,由此看出 0-9 的各个数字,当随机数数量足 够多时,产生概率是近似相同的,因此Fang ()函数产生的伪随机数

5、是可以近似看作随机数的。3 随机数常见的使用方法3.1 随机数小数(不考虑进位)的产生随机数产生器 rand ()是根据其后%n 中的 n 来确定产 生的数字的,会产生出所有小于 n 的整形数字(包括 0),由 于 C+语言中% (取余函数)只能输出整数,所以随机小数是 不能直接产生的,必须运用其他方式。从图 3 可以看出,虽然 rand ()函数只能输出整数,但 通过除法运算,可以输出小数,再加上整数就可以输出具有 大于 1 的随机小数,通过实验结果可以证明算法的正确性。3.2 随机数小数(考虑进位)的产生通过对 rand ()函数产生数据的数字类型变换从而为浮 点数创造了可能, /10 可

6、以制造出一位小数, /100 可以制造 出两位小数,如果想随机输出 3-5 之间的小数只需要将 %n 中 的 n 改为大于10 的数字,通过小数点进位的方式来进行。 例如:图 4 这为小数随机数(跨位数)的生成算法分析:关于进位,可以看做是大于 1 的小数和整数的相 加,通过 rand ()随机输出 0-20 的随机数,除以 10 后,便 成为随机输出 0.0-2.0 之间的随机小数, 加上 3 后成为随机输 出 3.0-5.0 之间的随机数,根据实验结果,这种算法正确。3.3 任意数的随机输出C+中 rand ()只能通过取余函数来进行模拟,如果要 随机出特定的随机数,譬如1、4、5、9 这

7、四个随机数,我们可以通过 if 来进行筛选。分析:随机数只能连续输出,如果要输出特定的数字只 能依靠if 判断语句,进行随机数的筛选,如果是特定的数字 就输出,不是就继续随机输出下一个数字。通过图实验结果 证明这种算法正确。3.4 不同比例随机数输出 在实际生活中随机数的输出概率并不均等,那么依靠C+语言中,运用 rand()函数仍可以进行输出,例如 0、1、2、3、4、 5、 6 这些数字,而 0、 1 、 2、 3 这三个数字比其他 数字更容易输出 50%。分析:第一 ?for 循环按等比例输出随机数,第二个 for 循环通过再次随机输出特定相同数字相同的次数,通过判断 语句,只打印比例多出来的数字,从而使特定数字多出 50% 的概率输出,通过实验结果,得出这种算法是正确的。3.5 任意 0、 1 串的输出 在实际编程操作中, 很多时候都要运用 0、1 串的输出分析:运用 for ()循环进行具体次数的输出使字符串的 输出更加方便。4 小结 我们在生活中也会遇到很多有关随机数的问题,如随机抽奖,随机点名等等。本文介绍了 C+中随机数的使用以及

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论