为什么 Numpy random.uniform 不那么统一?
Why is Numpy random.uniform not so uniform?
我想在 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)
解决了我打算在第二个问题中解决的问题。
第一个问题:在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。
第二个问题:我觉得很统一。有什么问题?
我想在 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)
解决了我打算在第二个问题中解决的问题。
第一个问题:在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。
第二个问题:我觉得很统一。有什么问题?