2016-04-25 10 views
1

在Matlab中我有以下:Matlab來的Python轉換蘭特()

duration = 20 
n=5 
times = rand(1,n)*duration; 

變量「次」給出了一個1乘n矩陣,其被填充以0和1之間的隨機數,然後乘以20.這將導致一組5個數字介於0和20之間。

現在我想在Python中實現相同的功能,那將是什麼樣的等效功能? 我試過如下:

times = random.uniform(1,durations,n) %% or times = random.uniform(1,20,5) 

但我得到這個錯誤:

TypeError: uniform() takes exactly 3 arguments (4 given)

這沒有任何意義對我來說,因爲我似乎只是給了它3個參數。

回答

2

random.uniform只接受您的隨機數字的上限和下限。您需要撥打random.uniformn次來創建一個隨機值列表。

values = [random.uniform(0, 20) for _ in range(5)] 

或者,你可以使用numpy.random.rand以同樣做到這一點,以MATLAB和函數會返回一個numpy的陣列。

import numpy as np 
values = np.random.rand(1, 5) * 20 

如果從MATLAB到Python轉換的程序代碼,numpy更推薦使用標準數據類型,由於它的計算速度和相似的行爲MATLAB。

+0

非常感謝您的解釋和解決方案!確實,這個作品,我嘗試了numpy版本! – Spica