我想在的范围内生成随机数-1, 1
,并希望每一个以具有被产生相等的概率。 即我不想极端是不太可能出现。 什么是这样做的最佳方式?
到目前为止,我已经使用:
2 * numpy.random.rand() - 1
并且:
2 * numpy.random.random_sample() - 1
我想在的范围内生成随机数-1, 1
,并希望每一个以具有被产生相等的概率。 即我不想极端是不太可能出现。 什么是这样做的最佳方式?
到目前为止,我已经使用:
2 * numpy.random.rand() - 1
并且:
2 * numpy.random.random_sample() - 1
你的做法是好的。 另一种方法是使用函数numpy.random.uniform()
>>> numpy.random.uniform(-1, 1, size=10)
array([-0.92592953, -0.6045348 , -0.52860837, 0.00321798, 0.16050848,
-0.50421058, 0.06754615, 0.46329675, -0.40952318, 0.49804386])
关于对极端的可能性:如果这将是理想化的,连续的随机数,以获得极限的一个可能性是0。由于浮点数是连续的实数离散,在realitiy有一些积极的概率得到一些极端的。 这是某种形式的离散错误的,而且几乎可以肯定,这个错误会在你的模拟其他错误被dwarved。 别担心!
需要注意的是numpy.random.rand
允许在一个调用生成均匀分布的多个样本:
>>> np.random.rand(5)
array([ 0.69093485, 0.24590705, 0.02013208, 0.06921124, 0.73329277])
它也允许在生成给定的形状的样品:
>>> np.random.rand(3,2)
array([[ 0.14022471, 0.96360618],
[ 0.37601032, 0.25528411],
[ 0.49313049, 0.94909878]])
如你说,均匀[-1之间分布的随机数,1)可与所生成的:
>>> 2 * np.random.rand(5) - 1
array([ 0.86704088, -0.65406928, -0.02814943, 0.74080741, -0.14416581])
从文档numpy.random.random_sample
:
结果是从在规定的间隔中的“连续均匀”分布。 采样UNIF [A,B)中,B> A乘以输出random_sample的
(ba)
并添加a
:(b - a) * random_sample() + a
每斯文Marnach的答案,该文档可能需要更新引用numpy.random.uniform
。