我已经使用了此功能:
np.random.seed(40)
np.random.normal(loc = 0, scale = 1, size = 10)
但是,我假设值应该在1到-1之间,对吗? 但是我得到的值大于1且小于-1。那怎么可能?
我得到了这个数组:
array([-0.6075477 , -0.12613641, -0.68460636, 0.92871475, -1.84440103,
-0.46700242, 2.29249034, 0.48881005, 0.71026699, 1.05553444])
您会看到类似2.2924的值以及-1.8,这是超出标准偏差的范围
我已经编写了此代码,可以吗?
final_data = []
count = 0
a = 26 # standard deviation
b = 157 # mean
for i in range(2000):
y = a*np.random.normal(0, 1, 1) + b # equation to multiply by the std and add the mean
if y <= upper and y >= lower :
final_data.append(y[0])
count += 1
if count > 608:
break;
其中上下分别是平均值+ std和平均值-std。 我首先生成了一个随机分布的数字,然后将其放入等式中。如果数字在特定范围之间,那么我将其添加到列表中
答案 0 :(得分:2)
正态分布不限制值的范围。这仅意味着68%的值将在平均值的1个标准差之内; 2个标准偏差内的偏差为95%,3个标准偏差内的偏差为99.7%。 理论上,无论标准偏差如何,您都可以从-无限到无穷大获得任何值。
答案 1 :(得分:1)
只需添加到上一个评论并回答:
如果要从间隔中绘制随机数,则必须选择具有上限和下限的分布。例如,均匀分布使上下限之间的每个数字具有相等的概率。对于numpy,您可以在此处查看:https://docs.scipy.org/doc/numpy-1.15.0/reference/generated/numpy.random.uniform.html