使用 numpy 生成从 0 到 1 的随机小数,正态分布

generate random decimal numbers from 0 to 1 with normal distribution using numpy

我是 numpy 的新手。我想使用 numpy 随机分布生成从 0 到 1 的随机值,已知输入是标准差 = 0.2 和均值 = 0.55,没有。人口 = 1000。我使用了这个代码:

number = np.random.normal(avg, std_dev, num_pop).round(2)

但是它生成了负值和大于 1 的数字。如何将值限制在 0 到 1 之间?

您可以使用

number = numpy.random.rand(1).round(2)

会生成一个区间[0,1]的随机数。

正态分布没有下限或上限,从中抽样并丢弃范围外的结果,直到获得 1000 个必要点,这会很尴尬。 幸运的是有截断的正态分布:

from scipy import stats

low = 0
high = 1
mean = 0.55
stddev = 0.2
num_pop = 1000

number = stats.truncnorm.rvs(low, high,
                             loc = mean, scale = stddev,
                             size = num_pop)