想必大家会发现,Scratch自带的取随机数积木只能获得服从均匀分布的随机数,这并不是我们想要的。那么该如何获得服从正态分布的随机数呢?有人会说,你不是都提到中心极限定理了吗?但各位要考虑到Scratch的性能,当取大量样本时,会产生明显的卡顿;取少量样本时,又无法很好地得到正态分布。因此,当我们需要批量产生较多服从正态分布的随机数时,就需要使用本文的主角——Box-Muller法。
Box-Muller法是一种将均匀分布转化为标准正态分布(均值为0,标准差为1)的算法。
如果X1、X2属于(0,1]区间,那么


Y1、Y2服从标准正态分布。(注意这里的2*pi是弧度制,在Scratch中需要转换为角度制的360)
证明过程十分巧妙,主体过程只涉及指数-对数运算知识,各位有兴趣可以上b站学习到。它本是用作获得二维正态分布的,自然也可以在本例中用作获得一维正态分布。