def main():
x = [randint(1,100) for i in range(1,100)]
return x
這將返回100個隨機數btw 1和100.每次我調用函數時,它都會返回不同的數字序列。我想要的是每次都得到相同的數字序列。也許將結果保存在......?Python - 生成相同的隨機數
def main():
x = [randint(1,100) for i in range(1,100)]
return x
這將返回100個隨機數btw 1和100.每次我調用函數時,它都會返回不同的數字序列。我想要的是每次都得到相同的數字序列。也許將結果保存在......?Python - 生成相同的隨機數
您可以提供一些固定的種子。
import random
def main():
random.seed(9001)
x = [random.randint(1,100) for i in range(1,100)]
return x
欲瞭解更多有關種子:random.seed(): What does it do?
這是不正確的。它不提供相同的結果,因爲它是一個這樣的隨機數列表。 –
@AshishNitinPatil你能更具體嗎? –
你可以做的不止於此。在任何特定的點你可以用'random.getstate()'檢索rng狀態,然後用'random.setstate()'重置它。 – pvg
這裏是你的代碼
import random
s = random.getstate()
print([random.randint(1,100) for i in range(10)])
random.setstate(s)
print([random.randint(1,100) for i in range(10)])
在這兩個調用後構圖的基本的例子,你會得到相同的輸出。關鍵是,在任何時候你都可以檢索並隨後重新分配rng的當前狀態。
好的,但是..如何將getstate()和setstate()合併到程序中?請用簡單的英語寫作 –
當然,你只需要更詳細地解釋一下你的意思是「包含在程序中」以及你所尋找的行爲是什麼。 – pvg
In [19]: for i in range(10):
...: random.seed(10)
...: print [random.randint(1, 100) for j in range(5)]
...:
...:
[58, 43, 58, 21, 82]
[58, 43, 58, 21, 82]
[58, 43, 58, 21, 82]
[58, 43, 58, 21, 82]
[58, 43, 58, 21, 82]
[58, 43, 58, 21, 82]
[58, 43, 58, 21, 82]
[58, 43, 58, 21, 82]
[58, 43, 58, 21, 82]
[58, 43, 58, 21, 82]
random.seed
函數必須在新調用隨機前調用。
In [20]: random.seed(10)
In [21]: for i in range(10):
...: print [random.randint(1,10) for j in range(10)]
...:
[5, 6, 3, 9, 9, 7, 2, 6, 4, 3]
[10, 10, 1, 9, 7, 4, 3, 7, 5, 7]
[7, 2, 8, 10, 10, 7, 1, 1, 2, 10]
[4, 4, 9, 4, 6, 5, 1, 6, 9, 2]
[3, 5, 1, 5, 9, 7, 6, 9, 2, 6]
[4, 7, 2, 8, 1, 2, 9, 10, 5, 5]
[3, 3, 7, 2, 2, 5, 2, 7, 9, 8]
[5, 4, 5, 1, 8, 4, 4, 1, 5, 6]
[4, 9, 7, 3, 6, 10, 6, 7, 1, 5]
[5, 5, 5, 6, 6, 5, 2, 5, 10, 5]
你可以使用'pickle'或者只生成一次並在程序中對其進行硬編碼。 –
你必須更具體一些,有很多方法可以做到這一點。 –
我不認爲'鹹菜'是直接相關的,並且一次生成不是所要求的。 – pvg