我希望能够从只落在 0 和 1 之间的正态分布中选取值。在某些情况下,我希望能够基本上只返回一个完全随机的分布,而在其他情况下,我想返回落在高斯的形状。
目前我正在使用以下功能:
def blockedgauss(mu,sigma):
while True:
numb = random.gauss(mu,sigma)
if (numb > 0 and numb < 1):
break
return numb
它从正态分布中选择一个值,如果它落在 0 到 1 的范围之外则丢弃它,但我觉得必须有更好的方法来做到这一点。
原文由 Catherine Georgia 发布,翻译遵循 CC BY-SA 4.0 许可协议
听起来您想要 截断的正态分布。使用 scipy,您可以使用
scipy.stats.truncnorm
从这样的分布中生成随机变量:上图显示截断正态分布,下图显示具有相同均值
mu
和标准差sigma
的正态分布。