设计一个模拟标准正态分布随机变量的算法
时间: 2024-12-16 07:19:10 浏览: 21
设计一个模拟标准正态分布(也称为高斯分布,其均值为0,方差为1)的随机变量算法通常涉及以下步骤,这里以Python为例:
1. **Z变换**: 标准正态分布可以用一个均匀分布在(-1, 1)范围内的随机数z乘以√(-2 * ln(1 - uniform))得到,其中uniform是一个[0, 1)区间的随机数,ln表示自然对数。
```python
import math
import random
def standard_normal_random():
u = random.uniform(0, 1)
z = math.sqrt(-2 * math.log(u))
return z
```
2. **Box-Muller Transform**: 这是一种更复杂的生成方法,通过两个独立的均匀分布随机变量计算出更接近标准正态的随机变量,但它比直接使用Z变换更为精确。
```python
def box_muller_transform():
while True:
x = 2 * random.random() - 1
y = 2 * random.random() - 1
r = x**2 + y**2
if r < 1:
break
theta = math.acos(x / math.sqrt(r))
return math.sqrt(-2 * math.log(r)) * math.sin(theta)
```
阅读全文