2017-05-22 71 views
-1

我有一個2D陣列隨機數發生器或浮動

b=[[1,100],[0.0,0.8],[11,111],[0.8,0.999],[11,111],[16,256],[1,10]] 

含有整數和浮點數。我想選擇一個隨機數。我會通過迴路:

for i in range(6): 
    aa=b[i][0] 
    bb=b[i][1] 
    a[i]=rand(aa,bb) 
    print(a[i]) 

現在我想從範圍中的「變量」,當其整數選擇隨機數,它的整數和whens其浮動選擇隨機從範圍內隨機選擇的浮點數「b」。

我已經看到函數,要麼他們返回浮點數或整數的隨機數,但不是兩個。

回答

0
  1. 構建一個接受範圍參數的自定義方法。
  2. 如果範圍是整數,只需在範圍內生成隨機數。
  3. 如果範圍是浮點數,則將範圍轉換爲整數,即[0.8,0.999]變爲800,999,係數乘以10^3(或者您可以使用10^4獲得更高精度)。生成一個介於800-999之間的隨機整數,如856,將其除以用於浮點→整數轉換的乘法因子,在此情況下爲10^3,因此您的隨機浮點數爲0.856。
  4. 決定使用多大乘法因子將取決於您的浮點範圍的小數精度。
1

這將b產生是整數隨機數的列表或浮根據範圍的內容:

[(random.randrange if isinstance(lower, int) 
    else random.uniform)(lower, upper) 
for lower, upper in b] 

在這裏,我們簡單地選擇使用random.randrange如果我們遇到一個整數,否則我們用random.uniform

+0

你能解釋一下嗎,我沒有得到它。 –