【问题标题】:How can I generate n random values from a bimodal distribution in Python?如何从 Python 中的双峰分布生成 n 个随机值?
【发布时间】:2020-03-17 11:49:59
【问题描述】:

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

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 应该是权重,你会得到低于零和高于一的权重;这可能不是你想要的。

标签: python random normal-distribution


【解决方案1】:

不清楚您的问题出在哪里;还不清楚变量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)

这会产生下图:

【讨论】:

  • 谢谢。我试图用 w 做的是将 x1 或 x2 随机分配给 X,所以 X 总数为 400。
  • @ejwmv 在这种情况下,您应该使用只有两个值(在您的情况下为 0 和 1)的随机分布,而不是另一个随机分布。但是预先随机拆分 N 可能更容易,总共 400 个。例如,(随机)X1 为 166,X2 为 234。这应该会产生相同的结果。
猜你喜欢
  • 2014-03-14
  • 2015-12-18
  • 1970-01-01
  • 1970-01-01
  • 2016-05-27
  • 1970-01-01
  • 2020-05-01
  • 2017-06-11
  • 1970-01-01
相关资源
最近更新 更多