在numpy范围内对随机浮点数进行采样

时间:2012-08-08 21:52:07

标签: python numpy scipy

如何在numpy的间隔[a,b]中对随机浮点数进行采样?不只是整数,而是任何实数。例如,

random_float(5, 10)

会在[5, 10]之间返回随机数。感谢。

3 个答案:

答案 0 :(得分:30)

uniform distribution可能会按照你的要求行事。

np.random.uniform(5,10) # A single value
np.random.uniform(5,10,[2,3]) # A 2x3 array

答案 1 :(得分:4)

import numpy as np
>>> 5 + np.random.sample(10) * 5
array([ 7.14292096,  6.84837089,  6.38203972,  8.80365208,  9.06627847,
        5.69871186,  6.37734538,  9.60618347,  9.34319843,  8.63550653]) 

答案 2 :(得分:1)

没有numpy你可以用随机模块做到这一点。

import random
random.random()*5 + 10

将返回10-15范围内的数字,作为函数:

>>> import random
>>> def random_float(low, high):
...     return random.random()*(high-low) + low
...
>>> random_float(5,10)
9.3199502283292208
>>> random_float(5,10)
7.8762002129171185
>>> random_float(5,10)
8.0522023132650808

random.random()返回一个从0到1的浮点数(上限不包含)。将它乘以数字可以得到更大的范围。 ex random.random()*5返回0到5之间的数字。向此处添加数字可提供下限。 random.random()*5 +10返回10到15之间的数字。我不确定为什么要用numpy来完成这个,但也许我误解了你的意图。