2012-05-14 58 views

回答

5
import random 

def r(minimum, maximum): 
    return minimum + (maximum - minimum) * random.random() 

print r(-1, 1) 

編輯︰@ San4ez的random.uniform(-1, 1)是正確的方法。沒有必要推倒重來......

反正random.uniform()編碼爲:

def uniform(self, a, b): 
    "Get a random number in the range [a, b) or [a, b] depending on rounding." 
    return a + (b-a) * self.random() 
+1

'高清蘭特():收益4 #由公平的骰子生成。保證是隨機的。「 –

+0

非常感謝。但是我不能這樣做。我想在運行腳本時將值作爲參數傳遞給我。 。#!/ usr/bin/env python import sys,random r = sys.argv [1] y = sys.argv [2] print random.range(y,r) – user1393251

+0

@ user1393251 - 你可以做這樣(我的'r'方法與正確的'random.uniform'一樣被調用),只是我在這裏重新發明了輪子......以San4ez的答案。 – eumiro

23

使用random.uniform(a, b)

>>> import random 
>>> random.uniform(-1, 1) 
0.4779007751444888 
>>> random.uniform(-1, 1) 
-0.10028581710574902 
1

大多數語言都有將在範圍內返回一個隨機數[0函數,1],然後你可以操縱它來適應你需要的範圍。在Python中,函數是random.random。因此,對於你的範圍爲[-1,1],你可以這樣做:

import random 
random_number = random.random() * 2 - 1 

增加一倍,我們得到一個範圍[0,2],並通過從一箇中減去它的數量,我們得到[ - 1,1]。

如果你想 integer in a specified range
2

print random.randrange(-1, 2) 

它使用作爲range相同的約定,所以不包括上限。

random.uniform的確,如果你需要浮動值類似的東西,但是如果包括上限是not always clear與否