Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
具有最小值和最大值的正态分布中的Python随机数生成器_Python_Python 3.x_Scipy_Data Science_Normal Distribution - Fatal编程技术网

具有最小值和最大值的正态分布中的Python随机数生成器

具有最小值和最大值的正态分布中的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个值的直方图:

顺便提一下,有人向我建议,我可以使用python中的半正态分布,使用0到无穷大来设置最小点和最大点:

0似乎切断了min,但我不知道如何处理无穷大


我想在正态分布中创建一个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)。我确实发现这种分发方式要好得多,而且是一种可行的解决方案。