系统能生成均匀分布的随机数,因此我们要生成指定分布的随机数,就要通过对均匀分布的随机数变换得到。
设随机变量R服从分布p{R=r}=1/r(R属于[0,1]),即R服从[0,1]上的均匀分布,而我们想要的随机变量X服从分布p{X=x}=f(x)(X属于[a,b]),那么我需要找到X与R的关系。
一,离散情形:
解:
作长度为1的线段,将其分成b-a+1段,各段长度依次为f(a),f(a+1),...,f(b)。(由于f(a)+f(a+1)+...+f(b)=1, 所以这些段正好铺满整个段线)。记各段ID依次为a,a+1,...,b。
定义随机变量X,X表示R的取值所落在的段的ID。
则p{X=x}=p{R的取值落在ID=x的段上}=p{R的取值落在长度为f(x)的段上}=f(x)。
即X服从p{X=x}=f(x)。
"X表示R的取值所落在的段的ID"这句就是X与R的关系,据此关系,任给一个R的取值r,我们便可计算出X的相应取值x,写成数学表达式即:
二,连续情形:
解:
跟离散情况一样的思路,类比得:
考虑到
即x满足方程
----
应用实例:
例1:
生成[0,L]上的随机数,要求取值x的概率随x的增大线性减小,且在L处减为0。
解:
根据条件可画出概率密度曲线如图所示,根据曲线在[0,L]上的面积为1,可知p轴截距为2/L,进而可写出密度函数表达式为:
由公式(2)知x为方程
由二次方程求根公式得:
由于x属于[0,L],故取
即:当r取[0,1]上的随机数,
联系客服