为什么Numpy是random.uniform不那么统一?

时间:2018-04-13 21:59:19

标签: python arrays numpy random random-seed

我想在0.00001到100000之间创建随机点,我尝试使用以下代码

np.random.uniform(0.00001,100000,100)

我有两个问题。 第一个问题是我希望有一个像random_state = 123这样的随机种子,以便我可以复制我的代码。 第二个问题与random.uniform的统一性有关。尽管函数的名称似乎没有从均匀分布中得出数组(见图)。

编辑:我认为我没有正确解释第二个问题。我希望我的值从1e-5到1e + 5均匀分布。结果均匀分布,但不包含非常小的数字。这就是我将其改为

的原因
temp = 10 ** np.random.uniform(-5,5,100) 

解决了我打算在第二个问题中解决的问题。

enter image description here

1 个答案:

答案 0 :(得分:3)

第一个问题: numpy播种就是这样做的

>>> from numpy.random import RandomState
>>> rs = RandomState(123)
>>> rs.uniform(0.00001,100000,100)[:3]
array([69646.91856282, 28613.93350218, 22685.14536415])
>>> rs.uniform(0.00001,100000,100)[:3]
array([51312.81542477, 66662.45501974, 10590.84851462])
>>> rs.seed(123)  # resetting state of the PRNG
>>> rs.uniform(0.00001,100000,100)[:3]
array([69646.91856282, 28613.93350218, 22685.14536415])

不要使用numpy.random.seed,因为它会设置全局状态。有关这样做的问题的信息,请查看评论主题here

第二个问题:对我来说看起来很整齐。有什么问题?