[英]In python, is there anyway to have a variable be a different random number everytime?
基本上我有這個:
import random
variable1 = random.randint(13, 19)
基本上,這樣做是為variable1分配一個13到19之間的隨機數。
但是,我要它做的是每次調用該變量時,在該變量之間分配一個13到19之間的不同隨機數。 反正我能做到這一點嗎?
如果我不夠清楚,這里有一個例子:
import random
variable1 = random.randint(13, 19)
print(variable1)
print(variable1)
print(variable1)
我想要的輸出看起來像這樣:
./script.py
15
19
13
是的,無論如何我都可以在python中做到這一點? (更具體地說是python3。但答案可能類似於python2答案)
也許這是一個愚蠢的問題,但是為什么不僅僅使用函數而不是變量呢?
也許更符合您的變量范例,為什么不對對象使用方法。 然后可以將該對象作為變量傳遞,並且該方法返回新的隨機數。
這接近您想要的
>>> import random
>>> variable1 = lambda: random.randint(13, 19)
>>> print(variable1())
18
>>> print(variable1())
15
>>> print(variable1())
17
>>>
在該特定示例中,有一種相當精明的方法。 print
將其參數隱式轉換為字符串。 您可以重載該功能:
class randomizer():
def __str__(self):
return str(random.randint(13, 19))
variable1 = randomizer()
print(variable1)
print(variable1)
print(variable1)
您提到“被叫”一詞,以這種方式,我認為您已經回答了自己的問題。 這正是功能或方法的工作。
變量只是對對象的引用。 您可以將對象存儲在變量中,該對象將覆蓋to字符串方法以生成隨機數,但這仍然是一個方法。
最終,您的要求將使幕后的實際情況變得晦澀難懂,結果將創建難以維護的代碼,恕我直言。
當您執行variable1 = random.randint(13, 19)
, variable1
包含不可變對象“數字13”(或其他數字)。 根據定義,它不能更改而不會成為另一個對象。 取而代之的是,您可以使用前面提到的可變對象填充變量,以允許其修改其“隨機數”。 或者,您可以直接調用一個函數。
它只是一個簡單的問題。
采用:
alist = range(13,20)
random.shuffle(alist)
現在您可以按隨機順序遍歷
在任務中使用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個變量。
為什么不完全跳過變量? 您也可以使用內聯函數: 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))
我看不到其他任何可能性,祝您好運!
也許我沒有正確理解問題,但您不能這樣做:
print(random.randint(13, 19))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.