使用numpy生成从0到1的正态分布的随机十进制数



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

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

然而,它生成的数字具有负值,也具有大于1的值。如何限制从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)

我也面临同样的问题。下面是我用来解决这个问题的方法:

number = abs(np.random.normal(0,1,1))
if number > 1:
number = number - 1

abs找到number的绝对值,使其为正。

最后的if语句确保数字不超过1,因为我们使用的是没有上限或下限的正态分布。

希望有帮助!

可以使用

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

在区间[0,1)内生成一个随机数。

最新更新