rand()函数产生的随机数为什么是伪随机数

彪马篮球鞋2023-04-28  21

计算机的运行过程是一个确定的过程,每一条指令都是确定,因此从根本上来讲,计算机产生不了真正意义上的随机数。

那么伪随机数怎么理解呢?举个最简单的例子,要随机产生0~9十个数,那么计算机可以循环快速的给出0、1、2、3、4、5、6、7、8、9、0、1……这样的一个数列,这个数列并不是随机的,而是有规律的(所以才叫做伪随机),当我们按下按钮,或者点下鼠标的瞬间,机器停止,并显示最后的一个数字(有点类似于玩老虎机),这个过程我们挑选出来的数字好像是随机的,但其实并不是100%随机,只有我们去触发机器的那个时间点是随机的,其他都是有规律的,所以就是伪随机。

rand()函数就是给出一列数值(这列数值是被事先打乱,但是是固定的数值),所以属于伪随机数。只是机器执行到rand()函数的时间点是随机的,才让我们感觉执行结果是随机的一样。

伪随机可以通过增加抽取的次数,使抽取到的概率更高。例如,如果要抽取一个概率为05的元素,可以抽取两次,这样抽取到这个元素的概率就为025,抽取三次的概率就为0125,以此类推。还可以使用更复杂的算法来提高抽取概率,例如贝叶斯定理,这种算法可以根据已知的概率分布来估计未知的概率。此外,可以使用更复杂的伪随机数生成器,例如伪随机数生成器(PRNG),来提高抽取概率。

伪随机,顾名思义就是不是真正的随机了,但是有“随机”的特性。例如,在无线通信里面的加扰“伪随机序列”,这种序列有一定的随机性,但有确定的参数与公式能够“复现”该序列。而真正的随机,毫无定法、不存在“复现”性了。

一般地,伪随机数的生成方法主要有以下3种:

(1) 直接法(Direct Method),根据分布函数的物理意义生成。缺点是仅适用于某些具有特殊分布的随机数,如二项式分布、泊松分布。

(2) 逆转法(Inversion Method),假设U服从[0,1]区间上的均匀分布,令X=F-1(U),则X的累计分布函数(CDF)为F。该方法原理简单、编程方便、适用性广。

(3)接受拒绝法(Acceptance-Rejection Method):假设希望生成的随机数的概率密度函数(PDF)为f,则首先找到一个PDF为g的随机数发生器与常数c,使得f(x)≤cg(x),然后根据接收拒绝算法求解。由于算法平均运算c次才能得到一个希望生成的随机数,因此c的取值必须尽可能小。显然,该算法的缺点是较难确定g与c。

因此,伪随机数生成器(PRNG)一般采用逆转法,其基础是均匀分布,均匀分布PRNG的优劣决定了整个随机数体系的优劣[7]。下文研究均匀分布的PRNG。

以上就是关于rand()函数产生的随机数为什么是伪随机数全部的内容,包括:rand()函数产生的随机数为什么是伪随机数、伪随机如何提高概率、伪随机是神马意思呢等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

转载请注明原文地址:https://juke.outofmemory.cn/read/3707125.html

最新回复(0)