《青岛大学计算机模拟》由会员分享,可在线阅读,更多相关《青岛大学计算机模拟(19页珍藏版)》请在金锄头文库上搜索。
1、5.4 随机数与伪随机数一、随机数与伪随机数真随机数:不可预计性,不可重复伪随机数:利用算法或公式产生的随机数。 1. 真随机数的发生源晶体管噪声发生器、放射粒子计数器等2.伪随机数:例如0,1区间均匀分布的随机数二、 伪随机数产生方法 1、平方取中法从某个初始的2k位整数开始,求出这个数 的平方,去头截尾取其中间2k位作为一个新 的随机数,重复以上过程,则得到一列随机 数。 例1 已知种子x0=3187, 利用平方取中法产生四 位数的随机数序列。(3187)2=10156969 x1=1569(1569)2=02461761 x2=4617 例2、 已知x0=44,试 产生两位数的随机数序列
2、。(44)2 =1936 x1=93 (93)2 =8649 x2=64(64)2 =4096 x3=09 (09)2 =0081 x4=08(08)2 =0064 x5=06 (06)2 =0036 x6=03(03)2 =0009 x7=00 (00)2 =0000 x8=00 例3、若利用平方取中法得到xi的一个中间值为 4500,继续类推,则有以下结果:(4500)2=20250000 xi+1=2500(2500)2=06250000 xi+2=2500 缺点: 重复周期短;可能产生例外;较长的随机数序列可能无法通过统计性检 验。l平方取中法的函数r=pfqz(k,x0,n) 其中,
3、k:随机数种子位数的一半x0:随机数种子n:产生的随机数个数r: 产生的随机数序列function r= pfqz(k,x0,n) format long; r = zeros(n,1); x = zeros(n,1); x(1) = x0; r(1) = x(1)/(100k); for i=2:nx(i) =mod(x(i-1)2 /(10k),100k);r(i) = x(i)/(100k); end format short2. 线性同余法若两整数A,B之差是m的整数倍,则称A和B按m同余。A-B=m*k 记为B=A mod mxn+1=(axn+c) mod m线性同余式(0x m-
4、1)例: 设a=5,c=3,m=16,取x0=7,用线性同余法产生随机 数序列。x0=7 x1=(57+3) mod 16=6 依次有x2=1 x3=8 x4=11 x5=10 x6=5x7=12 x8=15 x9=14 x10=9 x11=0x12=3 x13=2 x14=13 x15=4 x16=7令 Ri=xi/m 即可得到0,1区间分布的随机数 。介绍一种利用素数模乘同余法产生随机数的程序素数模m= 231-1 ,乘同余式如下: xn= 16807xn-1 mod (231-1)rn=xn/(231-1)l素数模乘同余法的函数r=primod(x0,n) 其中,x0:随机数种子n:产生
5、的随机数个数r: 产生的随机数序列function r=primod(x0,n) format long ; m=231-1; a=16807; r=zeros(n,1); x=zeros(n,1); x(1)=x0; for i=1:n-1x(i+1)=mod(a*x(i),m); end r=x(1:n)/m; format short;5.5 任意分布的伪随机变量的抽样一、直接抽样法1. 连续随机变量的直接抽样设连续随机变量 的分布密度函数为f(x),则其分布函数F(x)= ,若F(x)存在反函数 F-1(x),令为0,1区间的一个均匀分布的随机数,再令F(),则F-1()。证明:随机变
6、量x的概率为:例1:设某随机变量的分布函数由下式给出, 且产生 的均匀分布的随机数为0.1021, 0.2162, 0.7621, 现将它们转化为下列分布的随 机变量。 设为0,1区间的均匀随机数,令F(),则例2:产生a,b区间均匀分布的随机数,已知例3:产生指数分布的随机数,已知其分 布函数:2.离散随机变量的直接抽样 设离散随机变量X的可能取值为x1,x2, xk 密度函数为Pk=P(X=xk), k=1,2,3 其分布函数 为(1)取为0,1区间的均匀随机数 (2)求非负整数k,使得满足 F(xk-1)F(xk) (3)令=xk,即为所求随机数。例4:产生取值可能为0,1,2,3,4的离散分布随机数,其概率函数为Pk=(k+1)/15, k=0,1,2,3,4。例5:产生几何分布的随机数,其概率函数为:其分布函数为:当x=0, qx=1; x=,qx=0