在NumPy中获得随机数的最佳方法是什么?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (62)

我想在这个范围内生成随机数-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])

用户回答回答于

请注意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])

扫码关注云+社区