从正态混合分布中生成大小为1000的随机样本。混合组分具有N(0,1)和N(3,1)分布,混合概率为p1和p2=1-p1。
时间: 2024-04-16 21:29:21 浏览: 126
您可以使用以下代码来从正态混合分布中生成大小为1000的随机样本:
```python
import numpy as np
# 设置混合分布的参数
p1 = 0.7 # 组件1的概率
p2 = 1 - p1 # 组件2的概率
mu1 = 0 # 组件1的均值
mu2 = 3 # 组件2的均值
sigma = 1 # 组件1和组件2的标准差(假设相等)
# 生成随机样本
sample_size = 1000
component_choice = np.random.choice([0, 1], size=sample_size, p=[p1, p2])
samples = np.zeros(sample_size)
for i in range(sample_size):
if component_choice[i] == 0:
samples[i] = np.random.normal(mu1, sigma)
else:
samples[i] = np.random.normal(mu2, sigma)
print(samples)
```
在上述代码中,我们首先设置了混合分布的参数:p1是组件1的概率,p2是组件2的概率(根据p1计算得到),mu1和mu2分别是组件1和组件2的均值,sigma是组件1和组件2的标准差(假设相等)。
然后,我们使用`np.random.choice`函数根据概率p1选择组件1或组件2作为每个样本的组成部分。最后,根据所选的组件,使用`np.random.normal`函数生成相应组件的随机样本,并将其存储在`samples`数组中。
请注意,由于使用随机数生成器,每次运行代码都会得到不同的结果。
阅读全文