包装在线设计网站,徐州双语网站制作,一个人免费看直播,微信公众号网站开发语言在计算机中并没有一个真正的随机数发生器#xff0c;但是可以做到使产生的数字重复率很低#xff0c;这样看起来好象是真正的随机数#xff0c;实现这一功能的程序叫伪随机数发生器。有关如何产生随机数的理论有许多#xff0c;如果要详细地讨论#xff0c;需要厚厚的一本…在计算机中并没有一个真正的随机数发生器但是可以做到使产生的数字重复率很低这样看起来好象是真正的随机数实现这一功能的程序叫伪随机数发生器。有关如何产生随机数的理论有许多如果要详细地讨论需要厚厚的一本书的篇幅。不管用什么方法实现随机数发生器都必须给它提供一个名为“种子”的初始值。而且这个值最好是随机的或者至少这个值是伪随机的。“种子”的值通常是用快速计数寄存器或移位寄存器来生成的。下面讲一讲在C语言里所提供的随机数发生器的用法。现在的C编译器都提供了一个基于ANSI标准的伪随机数发生器函数用来生成随机数。它们就是rand()和srand()函数。这二个函数的工作过程如下1) 首先给srand()提供一个种子它是一个unsigned int类型其取值范围从0~655352) 然后调用rand()它会根据提供给srand()的种子值返回一个随机数(在0到32767之间)3) 根据需要多次调用rand()从而不间断地得到新的随机数4) 无论什么时候都可以给srand()提供一个新的种子从而进一步“随机化”rand()的输出结果。这个过程看起来很简单问题是如果你每次调用srand()时都提供相同的种子值那么你将会得到相同的随机数序列这时看到的现象是没有随机数而每一次的数都是一样的了。例如在以17为种子值调用srand()之后在首次调用rand()时得到随机数94。在第二次和第三次调用rand()时将分别得到26602和30017这些数看上去是很随机的(尽管这只是一个很小的数据点集合)但是在你再次以17为种子值调用srand()后在对于rand()的前三次调用中所得的返回值仍然是在对942660230017并且此后得到的返回值仍然是在对rand()的第一批调用中所得到的其余的返回值。因此只有再次给srand()提供一个随机的种子值才能再次得到一个随机数。