用计算机的随机函数,随机数的计算机生成

F(x)=(i-1)/(n-1)+\frac{x-a_i}{(n-1)*(a_{i+1}-a_i)}  if a_i<=x<=a_{i+1}, 1<=i

<=n-1

F(x)=1,  if a_n<=x

生成算法:

1. 产生随机变量u符合(0,1)区间的均匀分布

2. 令m为(n-1)*u+1的整数部分

3. 返回x=a_m+((n-1)*u-m+1)*(a_{m+1}-a_m)

(6) 指数分布(Exponential Distribution)

生成随机变量x,符合参数为beta的指数分布EXP(beta)。其概率密度函数为:

f(x)=exp(-x/beta)/beta    if 0<=x f(x)=0    x为其它

生成算法:

1. 产生随机变量u符合(0,1)区间的均匀分布

2. 返回x=-beta*ln(u)

(7)爱尔朗分布(Erlang Distribution)

生成随机变量x,符合参数为k, beta的爱尔朗分布ER(k,beta)。x为k个参数为beta的指

数分布的独立随机变量的和

生成算法:

1. 生成y_1,y_2,...,y_k符合指数分布EXP(beta)

2. 返回x=y_1+y_2+...+y_k

(8)伽玛分布(Gamma Distribution)

生成随机变量x,符合参数为alpha, beta的伽马分布Gm(alpha,beta)。其概率密度函数

为:

f(x)=\frac{x^{alpha-1}*exp(-x/beta)}{beta^alpha*Gamma(alpha)}   if x>=0

f(x)=0  x为其它

其中,Gamma(.)为伽马积分函数。注意,Gm(1,beta)即为指数分布EXP(beta),当alpha

为整数时,可以按照如下算法生成x:

生成算法:

1. y=0

2. 生成u符合指数分布EXP(1)

3. y=y+u

4. alpha=alpha-1

5. 跳回第2步循环,直到alpha=1

6. 返回x=beta*y

(9)贝塔分布(Beta Distribution)

生成随机变量x,符合参数为alpha, beta的贝塔分布B(alpha,beta)。其概率密度函数为

f(x)=\frac{Gamma(alpha+beta)*x^{alpha-1}*(1-x)^{beta-1}}{Gamma(alpha)*Gamma(

beta)}, 0<=x<=1

其中,Gamma(.)为伽马积分函数。当alpha, beta为整数时,可以按照如下算法生成x

生成算法:

1. 产生y1符合伽马分布Gm(alpha,1)

2. 产生y2符合伽马分布Gm(beta,1)

3. 返回x=y1/(y1+y2)

(10)威布尔分布(Weibull Distribution)

生成随机变量x,符合参数为alpha, beta的威布尔分布W(alpha,beta)。其概率密度函数

为:(alpha, beta >0)

f(x)=alpha*x^{alpha-1}*exp(-(x/beta)^alpha)/(beta^alpha)    if 0<=x f(x)=0   x为其它

生成算法:

1. 生成y符合指数分布EXP(1)

2. 返回x=beta*y^{1/alpha}

(11)几何分布(Geometric Distribution)

生成离散随机变量x,符合参数为p(0

F(x)=p*(1-p)^x, x=0,1,2,...

生成算法:

1. 产生随机变量u符合(0,1)区间的均匀分布

2. 返回x=ln(u)/ln(1-p)的整数部分

(12)负指数分布(Negative Binomial Distribution)

生成离散随机变量x,符合参数为k, p(0

p的几何分布随机变量之和

生成算法:

1. 生成y_1,y_2,...,y_k符合几何分布Ge(p)

2. 返回x=y_1+y_2+...+y_k

(13)Logistic 分布

生成随机变量x,符合参数为a, b的Logistic分布L(a,b)。其概率密度分布函数为:

f(x)=\frac{exp(-(x-a)/b)}{b*(1+exp(-(x-a)/b))^2}

生成算法:

1. 产生随机变量u符合(0,1)区间的均匀分布

2. 返回x=a-b*ln(1/u-1)

(14)正态分布(Normal Distribution)

生成随机变量x,符合参数为mu, sigma的正态分布N(mu,sigma^2)。其概率密度分布函数

为:

f(x)=\frac{exp(-(x-mu)^2/(2*sigma^2))}{sigma*sqrt(2*pi)}

生成算法:

1. 产生随机变量u1, u2符合(0,1)区间的均匀分布

2. y=sqrt(-2*ln(u1))*sin(2*pi*u2)

3. 返回x=mu+sigma*y

(15)卡方分布(Chi-Square Distribution)

令z_1,z_2,...,z_k符合标准正态分布N(0,1),则变量x=\sum_{i=1}^k{z_i^2}符合k个自

由度的卡方分布Chi_sq(k),其概率密度函数为:

f(x)=\frac{x^{k/2-1}*exp(-x/2)}{Gamma(k/2)*2^{k/2}}, x>0

生成算法:

1. 生成z_1,z_2,...,z_k符合标准正态分布N(0,1)

2. 返回x=z_1^2+z_2^2+...+z_k^2

(16)F分布(F Distribution)

令y1符合卡方分布Chi_sq(k1),y2符合卡方分布Chi_sq(k2),则x=(y1*k2)/(y2*k1)符合

参数为k1,k2的F分布F(k1,k2)

生成算法:

1. 生成y1符合卡方分布Chi_sq(k1)

2. 生成y2符合卡方分布Chi_sq(k2)

3. 返回x=(y1*k2)/(y2*k1)

(17)学生分布(Student's Distribution)

令z符合标准正态分布N(0,1),y符合卡方分布Chi_sq(k),则x=z/sqrt(y/k)为学生分布

S(k)

生成算法:

1. 生成z符合标准正态分布N(0,1)

2. 生成y符合卡方分布Chi_sq(k)

3. 返回x=z/sqrt(y/k)

(18)对数正态分布(Lognormal Distribution)

令z符合正态分布N(mu,sigma^2),则x=exp(z)符合对数正态分布LogN(mu,sigma^2),其

概率密度分布函数为:

f(x)=\frac{exp(-(ln(x)-mu)^2)/(2*sigma^2)}{sqrt(2*pi)*sigma*x}, 0<=x f(x)=0, x为其它

生成算法:

1. 生成y符合正态分布N(mu,sigma^2)

2. 返回x=exp(y)

(19)多元正态分布(Multinormal Distribution)

一个n维随机向量x=(x_1,x_2,...,x_n)若符合多元正态分布,则其概率密度分布函数为

f(x)=\frac{exp(-(x-mu)'*Sigma*(x-mu)/2)}{(2*pi)^{n/2}sqrt(det(Sigma))}

其中,x,mu均为向量,mu=(mu_1,mu_2,...,mu_n),Sigma为实正定对称矩阵,存在正定

的逆矩阵,det为行列式,'表示转置

生成算法:

1. 产生上三角矩阵C,其元素为c_{ij}, i,j=1,...,n,使Sigma=C*C'

2. 产生u_1,u_2,...,u_n符合标准正态分布N(0,1)

3. x_k=mu_k+\sum_{i=1}^k{c_{ki}*u_i}  (k=1,2,...,n)

4. 返回x=(x_1,x_2,...,x_n)

(20)泊松分布(Poisson Distribution)

生成离散随机变量x,符合参数为lamda(lamda>0)的泊松分布P(lamda)。其累积概率分布

函数为:

F(x)=lamda^x*exp(-lamda)/x!,  x=0,1,2,...

生成算法:

1. y=0, b=1

2. 产生随机变量u符合(0,1)区间的均匀分布

3. b=b*u

4. y=y+1

5. 重复步骤3-5,直到b6. 返回x=y-1

(21)均匀分布(Uniform Distribution)

生成随机变量x,符合参数为(a,b)的均匀分布Unit(a,b),其概率密度分布函数为:

f(x)=1/(b-a), a<=x<=b

f(x)=0,  x为其它

一般采用生成伪随机序列的方法得到均匀分布的随机数,有两个基本方法:乘同余法和

混和同余法。

1. 乘同余法

基于如下的递推关系式产生正整数序列{x_i}

x_i=a*x_{i-1} (mod m), i=1,2,...

其中m=2^k,k>2,a=3 (mod 8)或 a=5 (mod 8),且a不能太小,初值x_0取正奇数,如1

再令u_i=x_i/m,则{u_i}为[0,1]分布的伪随机序列。

参数例子:a=179,m=2^35,x_0=11

2. 混和同余法

基于如下的递推关系式产生正整数序列{x_i}

x_{i+1}=a*x_i+c (mod m), i=1,2,...,n-1

其中a, c, m 都是非负整数,n使伪随机序列的长度。任何初始值x_1(被称为种子,且

0<=x_1<=m)通过上面的公式可以生成一组序列{x_1,x_2,...,x_n}。[0,1]之间的均匀分

布随机数可以通过下面的式子获得:

u_i=x_i/m, i=1,2,...,n

等价的,在区间[a,b]上均匀分布的随机数可以通过下式获得:

u_i=a+x_i*(b-a)/(m-1)

为了使结果具有理想统计特性,如分布均匀性,抽样随机性,试验独立性和前后一致性

等,参数x_1, a, c, m的选择需要特别注意,例如可以选择a=2^7+1,c=1,m=2^35。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值