下载此文档

C,C随机数产生.doc


文档分类:IT计算机 | 页数:约10页 举报非法文档有奖
1/10
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/10 下载此文档
文档列表 文档介绍
: .
C,C++ 随机数产生
在计算机中并没有一个真正的随机数发生器,但是可以 做到使产生的数字重复率很低,这样看起来好象是真正的随 机数,实现这一功能的程序叫伪随机数发生器。有关如何产 生随机数的理论有许多,如果要详细地讨论,需要厚厚的一 本书的篇幅。不管用什么方法实现随机数发生器,都必须给 它提供一个名为“种子”的初始值。而且这个值最好是随机的, 或者至少这个值是伪随机的。“种子”的值通常是用快速计数 寄存器或移位寄存器来生成的。 下面讲一讲在 C 语言里所提 供的随机数发生器的用法。 现在的 C 编译器都提供了一个基 于 ANSI 标准的伪随机数发生器函数,用来生成随机数。它 们就是 rand() 和 srand() 函数。这二个函数的工作过程如下: 1) 首先给 srand() 提供一个种子,它是一个 unsigned int 类 型,其取值范围从 0~65535 ;2) 然后调用 rand() ,它会根 据提供给 srand() 的种子值返回一个随机数 (在 0 到 32767 之 间)3) 根据需要多次调用 rand() ,从而不间断地得到新的随 机数; 4) 无论什么时候,都可以给 srand() 提供一个新的种 子,从而进一步“随机化” rand() 的输出结果。个这过程看起 来很简单,问题是如果你每次调用 srand() 时都提供相同的种 子值,那么,你将会得到相同的随机数序列,这时看到的现 象是没有随机数,而每一 次的数都是一样的了。例如,在 以 17 为种子值调用 srand() 之后,在首次调用 rand() 时,得 到随机数 94 。在第二次和第三次调用 rand() 时将 分别得到 26602 和 30017 ,这些数看上去是很随机的 (尽管这只是一个 很小的数据点集合 ),但是,在你再次以 17 为种子值调用 srand() 后,在对 于 rand() 的前三次调用中,所得的返回值 仍然是在对 94 ,26602 ,30017 ,并且此后得到的返回值仍 然是在对 rand() 的第一批调用中所得到 的其余的返回值。 因 此只有再次给 srand() 提供一个随机的种子值, 才能再次得到 一个随机数。 要想使用随机函数 rand(), 就必须先要初始化随 机种子。具体点就是在 main 函数的开头加上 srand((unsigned)time(NULL)) 就可以了, 由于需要使用 time 所以还必须添加上 头文件。 标准库 <cstdlib> (被 包含于 <iostream> 中)提供两个帮助生成伪随机数的函 数:函数一: int rand(void) ;从 srand (seed) 中指定的 seed 开始,返回一个 [seed, RAND_MAX ( 0x7fff ))间的随机整数。 函数二: void srand(unsigned seed) ;参数 seed 是 rand() 的种子,用来初始化 rand() 的起始值。可以认为 rand() 在每 次被调用的时候,它会查看: 1) 如果用户在此之前调用过 srand(seed) ,给

C,C随机数产生 来自淘豆网www.taodocs.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息