簡體   English   中英

在python中,是否每次都有一個變量是不同的隨機數?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM