如何从 Python 中的双峰分布生成 n 个随机值?

How can I generate n random values from a bimodal distribution in Python?

我尝试生成并组合两个单峰分布,但认为我的代码有问题。

N=400
mu, sigma = 100, 5
mu2, sigma2 = 10, 40
X1 = np.random.normal(mu, sigma, N)
X2 = np.random.normal(mu2, sigma2, N)
w = np.random.normal(0.5, 1, N)
X = w*X1 + (1-w)*X2
X = X.reshape(-1,2)

当我绘制 X 时,我没有得到双峰分布

不清楚您的问题出在哪里;还不清楚变量 w 的目的是什么,也不清楚您如何判断得到不正确的结果,因为我们看不到情节代码或任何其他代码来确认或拒绝二项式分布。
也就是说,您的示例太不完整,无法完全 回答您的问题。但我可以做出有根据的猜测。

如果我执行以下操作:

import numpy as np
import matplotlib.pyplot as plt

N=400
mu, sigma = 100, 5
mu2, sigma2 = 10, 40
X1 = np.random.normal(mu, sigma, N)
X2 = np.random.normal(mu2, sigma2, N)
X = np.concatenate([X1, X2])
plt.hist(X)

然后生成下图: