2014-02-27 185 views
22

這可能是一個愚蠢的問題,但我一直沒能找到一個函數來生成一定範圍內的給定長度的隨機浮點數組。生成一個範圍之間的隨機浮點陣列

我看過Random sampling但沒有功能似乎做我所需要的。

random.uniform接近,但它只返回一個單一的元素,而不是一個特定的數字。

這就是我所追求的:

ran_floats = some_function(low=0.5, high=13.3, size=50) 

這將返回50隨機非唯一的浮標陣列(即:重複允許)均勻分佈在範圍[0.5, 13.3]

有沒有這樣的功能?

+5

,但是你沒有提到'numpy.random .uniform「,儘管它具有您想要的呼叫簽名。你有'numpy'庫嗎? – DSM

+0

'[random.uniform(low,high)for xrange(size)]' – Phylogenesis

+1

@DSM是的,我有,你顯然是100%正確的。我錯過了這個功能,它似乎正是我所需要的。你介意提出你的評論作爲答案嗎? – Gabriel

回答

8

爲什麼不使用列表理解?

ran_floats = [random.uniform(low,high) for _ in xrange(size)] 
3

爲什麼不把random.uniform與列表理解相結合?

>>> def random_floats(low, high, size): 
... return [random.uniform(low, high) for _ in xrange(size)] 
... 
>>> random_floats(0.5, 2.8, 5) 
[2.366910411506704, 1.878800401620107, 1.0145196974227986, 2.332600336488709, 1.945869474662082] 
2

可能已經有一個函數來做你要找的東西,但我不知道它(但?)。 在此期間,我會suggess使用:

ran_floats = numpy.random.rand(50) * (13.3-0.5) + 0.5 

這將產生形狀與0.5和13.3之間的均勻分佈的陣列(50)。

你也可以定義一個函數:

def random_uniform_range(shape=[1,],low=0,high=1): 
    """ 
    Random uniform range 

    Produces a random uniform distribution of specified shape, with arbitrary max and 
    min values. Default shape is [1], and default range is [0,1]. 
    """ 
    return numpy.random.rand(shape) * (high - min) + min 

編輯:嗯,是啊,所以我錯過了,有numpy.random.uniform()你想要完全相同的來電! 嘗試import numpy; help(numpy.random.uniform)瞭解更多信息。

1

這是你加了標籤的問題`numpy`最簡單的方法

np.random.uniform(start,stop,(rows,columns)) 
相關問題