模拟和生成高斯随机数序列(服从标准正态分布的随机变量)
Box-Muller 法 & Marsaglia 极坐标法
Box-Muller:使两个独立的均匀分布生成一个高斯分布。
Box-Muller方法的基本思想是利用两个独立的均匀分布随机变量的关系来生成高斯分布的随机数,用于从均匀分布的随机数生成服从标准正态分布的随机数序列:
以下是Box-Muller转换的步骤:
生成两个独立的均匀分布随机变量: 和 ,范围在 之间。计算两个标准正态分布的随机变量 和 :
通过这个过程,可以从两个独立的均匀分布随机变量生成两个服从标准正态分布的随机变量, 和 即为两个服从标准正态分布的随机变量:
如果需要生成特定均值和标准差的正态分布随机数: ,则将生成的标准正态分布随机数进行线性变换:
Box-Muller转换的优点在于简单易用,并且生成的结果服从标准正态分布,适用于模拟和生成高斯随机数序列。对于Box-Muller转换, 和 的公式是通过将两个独立的均匀分布随机变量 和 转换为标准正态分布的,确保它们满足标准正态分布的性质:
Marsaglia:
生成两个独立的均匀分布随机变量 和 ,范围在 之间。
计算两个均匀分布随机变量的平方和:
如果 不满足 ,则需要重新生成 和 ,直到 满足
计算变换后的随机变量:
这样生成的 和 也是服从标准正态分布的随机变量。
两者的优缺点:
Box-Muller转换和Marsaglia极坐标法都是生成标准正态分布随机数的常用方法,但它们在不同情况下有不同的优劣势和应用场景。
Box-Muller转换
优点
- 简单易懂:算法相对简单,容易理解和实现。
- 确定性计算:每次都能生成两个独立的标准正态分布随机数,无需反复试验。
缺点
- 对数和三角函数计算开销大:使用了对数和三角函数,这些计算在一些场合可能会比较耗时。
适用场景
- 学习和教学:因为其简单性,Box-Muller转换常用于教学和学习场合。
- 对性能要求不高的场合:适合那些对计算速度要求不高的场合,比如一些模拟实验或随机数生成器的简单应用。
Marsaglia极坐标法
优点
- 计算效率高:没有对数和三角函数计算,适合对计算效率要求较高的应用场合。
- 不需要两个均匀分布随机变量都在 之间:可以使用更广泛的均匀分布随机变量范围。
缺点
- 需要反复试验:当生成的 不在 之间时,需要重新生成随机数,这可能导致额外的计算开销。
适用场景
- 高性能要求的应用:如大型模拟、实时系统或需要大量标准正态分布随机数的场合。
- 需要快速生成高质量随机数的应用:如金融模型、科学计算等。
总结
- Box-Muller转换:适合简单场合,对计算性能要求不高的应用。
- Marsaglia极坐标法:适合对性能有较高要求的场合,需要生成大量高质量标准正态分布随机数的应用。