二、拒绝法

       当某些随机变量的分布函数不容易获取其反函数时,就不能使用反变换法产生该随机变量的随机数,这是可以考虑使用拒绝法产生随机数。

2.1 拒绝法的原理

假设某随机变量的概率密度曲线如下图所示

对于随机变量的某一个取值x1,其概率密度为p(x1),其接受率即为x=x1的概率密度。

拒绝法产生随机数的步骤:

1)对概率密度函数p(x)的值域做归一化处理(因为r1=01),r1要反映r2=x1的概率密度比重,所以p(x)必须在(01)范围),即确定一个常数C,使得:

C*p(x)<1

2)根据x的取值范围,将其定义为r的线形函数:

x(r)=a+(b-a)r

3)随机产生一对标准随机变量r1,r2;

4)若r1r2满足下式:

r1<=C*p(x(r2))

则取x=r2,否则返回(3)。

 

2.2 拒绝法产生随机数

随机变量x的概率密度函数如下:

设计该随机变量的伪随机数产生方法,并产生随机变量x10个随机数。

解:

(1)       概率密度取值归一化

要求:    令:

-àC=0.4822

2)因为x取值范围已经是[01],所以不需进行处理

3)随机产生随机数对(r1,r2

4)判断是否接受x=r2

使用拒绝法产生该随机变量数据的Excel实现表格如下。

E列红色数字为产生并选定的随机变量x的数值。其中A列和B列数字行使用了Excel提供的[0,1]均匀分布随机函数Rand(),C列数字行使用的表达式为:=0.4822*60*POWER(B3,3)*POWER(1-B3,2)D列使用自定义判定函数=Refuse(A3,C3)E列使用自定义判定函数=Getit(D3,B3);其中两个自定义函数体如下:

Public Function Refuse(r1 As Double, pr2 As Double) As Integer

   If pr2 >= r1 Then

      Refuse = 1

      Else

      Refuse = 0

      End If

End Function

-----------------------------------------------------------------------------------------------------------

Public Function Getit(Decision As Integer, r2 As Double) As Double

   If Decision = 1 Then

      Getit = r2

      Else

      Getit = 0

      End If

End Function

三、正态分布随机发生器

3.1 反变换法求正态分布随机变量

标准正态分布概率密度函数如下:

 

反变换过程如下:

设变量xy分别为服从标准正态分布的随机变量,则

进行坐标变换:

        ————〉

   其中:

故:

其中:

在对上述两个随机分布进行反变换:

则:

 

这种方法直观,推理明确,不过计算中出现了三角函数、对数运算,速度较低。

产生服从通用正态分布随机变量x的随机数步骤如下:

步骤:

令:

则:

à----->

 

3.2 运用拒绝法产生标准正态分布随机数

步骤:

1)概率密度值域归一化处理

---

2)对x的取值范围进行设定

x=a+(b-a)*r2

a=-b=-1000(一个足够大的负数)

3)随机产生两个标准随机数r1r2

4)判断是否接受x= a+(b-a)*r2

判断条件为: