§1.12二项式分布的随机数 功能 产生二项式分布的随机数。 、方法简介 二项式分布的概率函数为 f(x)=C4p(1一户) ∈{0,1 用Bin(n,p)表示。二项式分布的均值为n,方差为np(1-p)。当n=1时 Bin(n,p)就是贝努里分布BN(p)。 若y(=1,2,…,n)是独立同分布(ID)的参数为p的贝努里分布随机变量则x= ∑y服从二项式分布Bn(n,P)。因此,产生二项式分布随机变量x的算法如下 (1)产生mD贝努里分布的随机数y,y2,…,yn,即y~BN(p); (2)计算x=∑y 三、使用说明 1.子函数语句 int bin(n, p, s) 2.形参说明 n整型变量。二项式分布的参数n。 p——双精度实型变量。二项式分布的参数p。 s——长整型指针变量。*s为随机数的种子。 四、子函数程序(文件名:bin.c) int bin(n, p, s) double pr ong int *s: i int i; double xi int for(x=0.0,i=0;i<n;i++) 23
return(x) 五、例题 产生50个参数n=5、p=0.7的二项式分布的随机数。 主函数程序(文件名 # include "stdio. h" #include "bin.c main( i int i,j, n, x long int s double p int bino n=5;p=0.7;s=13579; for(i=0;i<10;i++ for(j=0;j<5;j++) i x=bin(n, p, &s) printf("%1ld”,x); printf("\n"); 运行结果 4 145454 233335 5 3 323 2
§1.13泊松( Poisson)分布的随机数 功能 产生泊松分布的随机数。 二、方法简介 泊松分布的概率函数为 fc x∈10,1 用P(A)表示。泊松分布的均值为入,方差为λ。 定理若A>0,x是整数,:是(0,1)区间上均匀分布的随机数,即v~U(0,1),且 有 那么x是一个以λ为均值的泊松分布随机变量 产生泊松分布随机变量x的算法如下: (1)设b=1 (2)产生均匀分布的随机数,即4~U(0,1); (3)计算bbu (4)如果b≥e-,那么t*i+1,返回到(2); (5)取x=i 、使用说明 1.子函数语句 poisson (lambda,s) 2.形参说明 lambda—双精度实型变量。泊松分布的均值 s—长整型指针变量。*s为随机数的种子。 四、子函数程序(文件名: poisson,c) #include uniform.c include"math. h" int poisson (lambda, s) double lambda;
i int i, x: double a,b, u; a=exp(-lambda) b=1.0 (u=uniform(0.0.1. 0, s); i++; return(x) 五、例题 产生50个均值A=4的泊松分布的随机数 主函数程序(文件名: poisson.m) # include"poiss maIn n=4.0;s=13579; for(i=0;<10;i++) for(j=0;j<5;j十十) Y x=poisson(n, &s); ("%11d,x) 运行结果: 4 3 26
3 6 6 §1.14ARMA(,q)模型数据的产生 功能 产生自回归滑动平均模型ARMA(,q)的数据。 二、方法简介 自回归滑动平均模型ARMA(,q)为 其中a(=1,2,…,p)是自回归系数,b(i=0,1,…,q)是滑动平均系数,c(n)是白噪 给定白噪声t(n)的均值和方差,便可以由上式产生ARMA(p,q)的数据。 三、使用说明 1.子函数语句 void arma(a, b, p, q, mean, sigma, seed, x,n) 2.形参说明 双精度实型一组数组,长度为(p+1)。ARMA(p,q)模型的自回归系数 b—双精度实型一组数组,长度为(q+1)ARMA(p,q)模型的滑动平均系数。 p—整型变量。ARMA(p,q)模型的自回归阶数 q—整型变量。ARMA(p,q)模型的滑动平均阶数。 mean—双精度实型变量。产生白噪声所用的正态分布的均值p。 sigma——双精度实型变量。产生白噪声所用的正态分布的均方差 sed——长整型指针变量。*sed为随机数的种子。 x——双精度实型一组数组,长度为n。存放ARMA(p,q)模型的数据。 n—整型变量。ARMA(p,q)模型数据的长度。 四、子函数程序(文件名:arma,c) +include Mstdlib. h