思路是:
1. 在(a,b)上截取某个正态N(u, s^2)的去掉两个尾巴的分布(截尾正态),有四个参数a, b, u, s. 如果这个分布的MEAN=m(a,b,u,s), VAR=v(a,b,u,s),那么你的问题就变成已知MEAN(你题中是15)和VAR(你题中是5^2=25)求u,s(因为a,b已知,即你题中的10,20),其实这就是个两个未知数的两个方程组成的方程组。即:求解15=m(10,20,u,s), 25=v(10,20,u,s)
2.当然你会问,m(),v()的函数形式不知,如何解方程组?很简单,从WIKIPEDIA,
http://en.wikipedia.org/wiki/Truncated_normal_distribution 可以找到这两个函数的形式,太长,我不COPY了,那文中"MOMENTS"的地方写出前两个公式就是要找的函数。
3.不幸,你举的例子,方程是无解的,因为你的VAR(25)太大了,在10-20区间上MEAN=15的截尾正态最大VAR是8.3333333(那是10-20之间均匀分布的VAR,在此上的截尾正态之VAR不会超过它),所以我把你的例子改成MEAN=15,VAR=5(即标准差是SQRT(5)),这样方程组solution: u=15, s=2.5825
4. 后面就很容易了,算法如下:要得到(10,20)上截取某个正态N(15, 2.5825^2)的去掉两个尾巴的分布(截尾正态),用EXCEL写就是在:
A1格输入=NORMINV(RAND(),15,2.5825), B1输入=if(and(a1<20,a1>10),a1,-1),拉A1,B1的公式充满A列和B列,B列中不是-1的数,就是你要求的截尾正态随机数(当然VAR=5,不是你题中要求的25,因为VAR=25是做不到的)。