具有最小值和最大值的正态分布中的Python随机数生成器
顺便提一下,有人向我建议,我可以使用python中的半正态分布,使用0到无穷大来设置最小点和最大点: 0似乎切断了min,但我不知道如何处理无穷大具有最小值和最大值的正态分布中的Python随机数生成器,python,python-3.x,scipy,data-science,normal-distribution,Python,Python 3.x,Scipy,Data Science,Normal Distribution,顺便提一下,有人向我建议,我可以使用python中的半正态分布,使用0到无穷大来设置最小点和最大点: 0似乎切断了min,但我不知道如何处理无穷大 我想在正态分布中创建一个0-15的数字生成器,但由于分布限制的性质,很难找到一个不超过最大值或低于最小值的函数。我会尝试使用beta分布:。它非常简单(例如积分),并且能够拟合典型的反应时间分布 现在的问题是如何对固定的α和β参数进行有效采样scipy已经为我们完成了: 编辑:出于评论和好奇心,这里有一个示例,绘制10个样本和1000个值的直方图:
我想在正态分布中创建一个0-15的数字生成器,但由于分布限制的性质,很难找到一个不超过最大值或低于最小值的函数。我会尝试使用beta分布:。它非常简单(例如积分),并且能够拟合典型的反应时间分布 现在的问题是如何对固定的α和β参数进行有效采样
scipy
已经为我们完成了:
编辑:出于评论和好奇心,这里有一个示例,绘制10个样本和1000个值的直方图:
from scipy.stats import beta
from numpy import histogram
import pylab
max_time = 3
min_time = 0.5
a, b = 2, 7
dist = beta(a, b)
for _ in range(10):
sample = min_time + dist.rvs(size=1000) * (max_time - min_time)
his, bins = histogram(sample, bins=20, density=True)
pylab.plot(bins[:-1], his, ".")
pylab.xlabel("Reaction time [s]")
pylab.ylabel("Probability density [1/s]")
pylab.grid()
pylab.show()
我同意你的观点,即根据定义,正态分布没有有限的边界,即使是半正态分布也不再是正态分布。那么问题就是你想用它来做什么。我在模拟一个人在运动中的反应时间,例如0是瞬间的。所以它不一定是正态分布。。。看看这里:。。。有意思。。我也会看一看。反应时间的概率分布:它看起来像对数正态分布:谢谢,我将尝试使用原始问题中的最小值和最大值在python中创建一个reprex,除非你或其他人比我强。lol。为了保留你的答案,我不会在代码中添加另一个答案(尽管可以随意添加reprex)。我确实发现这种分发方式要好得多,而且是一种可行的解决方案。