2011-01-06 35 views
0

基本上我有這樣的:在Python中,是否有變量是每次不同的隨機數?

import random 
variable1 = random.randint(13, 19) 

,基本上是什麼做的是分配變量1 13和19大之間的隨機數。

但是,我希望它做的是在每次調用該變量時,在13和19之間分配一個不同的隨機數。無論如何,我可以做到這一點?

如果我不是很清楚這裏有一個例子:

import random 
variable1 = random.randint(13, 19) 
print(variable1) 
print(variable1) 
print(variable1) 

和輸出我想會是這個樣子:

./script.py 
15 
19 
13 

所以呀,反正我可以做到這一點蟒蛇? (更具體地說python3,但答案可能類似於python2的答案)

+0

看問題的傢伙是什麼:你可以重載該功能。他不想重複數字。 – 2011-01-06 04:03:14

回答

4

這是接近你想要

>>> import random 
>>> variable1 = lambda: random.randint(13, 19) 
>>> print(variable1()) 
18 
>>> print(variable1()) 
15 
>>> print(variable1()) 
17 
>>> 
4

也許一個愚蠢的問題,但爲什麼不只是使用函數而不是變量?或者更多的內聯你的變量範例,爲什麼不在對象上使用方法。該對象然後可以作爲變量傳遞,並且該方法返回新的隨機數。

1

使用:

alist = range(13,20) 
random.shuffle(alist) 

現在,你可以通過這個循環中,隨機順序

+0

爲什麼倒票?我認爲OP只是希望從一個集合中生成非重複元素。 – Gerrat 2011-01-06 04:02:14

2

你提到「叫」字,並以這種方式我認爲你已經回答了你自己的問題。這正是一個功能或方法的工作。

變量只是對象的引用。你可以在你的變量中存儲一個對象來覆蓋to string方法以生成一個隨機數,但這仍然是一種方法。

最終,你所要求的將會混淆實際背後的真實情況,並因此會產生較少的可維護代碼,恕我直言。


當你這樣做variable1 = random.randint(13, 19)variable1包含不可變對象的 「13號」(或其他數字)。根據定義,它不能變成另一個對象。相反,您可以用上述可變對象填充變量,以便修改其「隨機數」。或者你可以直接調用一個函數。

它只是一個簡單的問題。

0

爲什麼不完全跳過這個變量?您也可以使用內聯函數:print(random.randint(13, 19) + 1)

試試這個,看看它是否符合您的需求;)

print(random.randint(13, 19)) 
print(random.randint(13, 19)) 
print(random.randint(13, 19)) 
print(random.randint(13, 19)) 
print(random.randint(13, 19)) 

我看不到任何其他的可能性,所以祝你好運!

0

也許我沒有正確認識這個問題,但不能你只是做:

print(random.randint(13, 19)) 
0

如何使用random.sample爲您的任務是什麼?它Chooses k unique random elements from a population sequence

import random 
v1,v2,v3 = random.sample(range(13,20),3) 
print v1,v2,v3 

當然,我已經給出了這3個變量,你可以使用它的n個變量。

2

在這個具體的例子中,有一個相當常見的方式。 print將其參數隱式轉換爲字符串。

class randomizer(): 
    def __str__(self): 
     return str(random.randint(13, 19)) 

variable1 = randomizer() 
print(variable1) 
print(variable1) 
print(variable1) 
+0

在`__int__`中添加類似的東西,並設置爲:D – TryPyPy 2011-01-06 04:23:38

+0

+1,它比使用函數更好地匹配OP。假設OP作者知道一個函數是什麼,並且出於某種原因不想使用它。 – Marco83 2013-04-19 22:03:58

相關問題