2013-07-23 56 views
0

我試圖在N循環中生成不同的隨機順序,但python似乎生成相同的序列。下面的代碼是否正確寫入,因爲我期待?python隨機生成的命令是相同的

import random 
import time 

def funcA(): 
    nodeCount = 10    
    order = range(0, nodeCount) 

    random.seed(0x87654321)   
    random.shuffle(order)  

    print("Shuffle order - ") 
    print(order) 


if __name__ == '__main__': 

    cnt = 0 
    while cnt < 3:  
#   random.seed(0x87654321) 
     funcA() 
     time.sleep(5) 
     cnt += 1 
+0

很多東西在這裏。你沒有縮進功能或時間,但假設沒關係,你每次都重置種子,所以結果是一樣的。對於不同的結果,ust設置種子一次。 – Jiminion

回答

2

這裏的問題是,在此聲明:

random.seed(0x87654321) 

這樣做是提供了一個「種子」值隨機數發生器使用隨機數據。由於種子在每次調用shuffle函數之前硬編碼爲,因此隨機數生成器每次都會表現相同。

要解決問題(每次運行時都會得到不同的結果),只需刪除此語句即可。如果你想用種子來初始化它,做它的while循環之外初始化一次:

if __name__ == '__main__':  
    cnt = 0 
    random.seed(0x87654321) 
    while cnt < 3:  
     funcA() 
     time.sleep(5) 
     cnt += 1 
1

你播種用恆定的隨機數發生器。對具有相同種子的隨機數生成器的任何相同調用序列將產生相同的輸出。如果這不是您想要的,請不要撥打seed

1

調用random.seed()只有一次,而不是每次洗牌前。