我是新手。我想用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)内生成一个随机数。