2014-10-10 176 views
-2

假設我有一個非整數值的單列float數組:在Python中的數組中生成兩個值之間的隨機數

Data = [1.1; 1.2; 1.3; 1.4; 1.5]

我想在此數組中的兩個連續值之間生成隨機數並將這些值存儲在新數組中。即,新數組中的第一個值是1.1和1.2之間的隨機數,1.2和1.3之間的下一個隨機數等等。

我正在尋找獲得像data_rand = [1.15; 1.24; 1.37; 1.46] 基於原始數據陣列。

我的問題是(我將如何/什麼是最好的方法)遍歷數組中的所有值,並在數組中的每個後續數字對之間生成一個非整數隨機數,從而保存這些隨機數成一個新的陣列?有人可以提供一個基於這個小型5值數據數組的例子嗎?或者指出我在這個過程的每個階段的正確方向。

+2

這不是Python的 - 你的意思是一個'list',像'[1.1,1.2,1.3]'?到目前爲止你嘗試過什麼,它的問題究竟是什麼? – jonrsharpe 2014-10-10 14:06:58

回答

0
import random  
rand_data = map(random.uniform, data[:-1], data[1:]) 

random.uniform(a, b)給你ab之間的隨機浮點數。您可以將此函數映射到您的列表的兩個切片(第一個切片刪除最後一個元素,第二個切片刪除第一個元素)。所以在你的例子中,這兩個片將如下所示:[1.1, 1.2, 1.3, 1.4][1.2, 1.3, 1.4, 1.5]

1

要獲得一個隨機值ab之間,你可以添加01之間的random值乘以ab之差的絕對值,來的ab較小。

要獲得對項目的列表中很容易,你可以使用zip和切片:

>>> l = [1, 2, 3] 
>>> zip(l, l[1:]) 
[(1, 2), (2, 3)] 

除此之外,我建議你有一個自己去。

0
import random 

results = [] 
l = [1.1, 1.2, 1.3, 1.4, 1.5] 

for x in zip(l, l[1:]): 
    x = list(int(y * 100) for y in x) 
    results.append(float(random.randrange(x[0], x[1]))/100) 

這裏我乘以/除以100,因爲我想要2位小數,用10表示1位小數。

輸出:

結果

[1.14, 1.22, 1.37, 1.44] 
相關問題