2013-03-09 86 views
0

我下面這個例子 https://stackoverflow.com/a/9009657/1890488如何蟒蛇random.seed工作

他有這個作爲結果

>>> import random 
>>> rnd = random.Random(0) 
>>> [rnd.randint(0, 10) for i in range(10)] 
[9, 8, 4, 2, 5, 4, 8, 3, 5, 6] 
>>> rnd = random.Random(0) 
>>> [rnd.randint(0, 10) for i in range(10)] 
[9, 8, 4, 2, 5, 4, 8, 3, 5, 6] 
>>> rnd = random.Random(1) 
>>> [rnd.randint(0, 10) for i in range(10)] 
[1, 9, 8, 2, 5, 4, 7, 8, 1, 0] 

我有幾個問題

  1. 爲什麼前兩個序列是同樣
  2. 當我們通過1作爲參數dos它意味着那麼第一個值如何來作爲1

回答

3

前兩個序列是一樣的,因爲你用相同的種子值它們。這是功能

可設定的種子使您可以通過重複使用相同的種子來有意地重複您的序列。例如,這可以用來實現完全等同於原始遊戲的遊戲重放,儘管該遊戲使用隨機數生成器來進行遊戲中的相遇或某些AI決策。

+0

因此,這意味着,如果我給那麼相同的種子每'N'迭代將是同爲任意數量的randomnumber發電機 – user196264097 2013-03-09 13:45:28

+0

@ user196264097是的,如果你給了相同的種子,你會得到相同的序列出來的發電機。這就是僞隨機數發生器的工作原理。 – user4815162342 2013-03-09 14:21:45

2

因爲它只是一個僞隨機生成器。這是函數(數學意義上),它具有很好的平方分佈。常見的做法是使用系統時間以毫秒爲單位種子:

rnd = random.Random(int(round(time.time() * 1000)))