0

我试图在 N 循环中生成不同的随机顺序,但 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
4

3 回答 3

2

这里的问题在这个声明中:

random.seed(0x87654321)  

这样做是为随机数生成器提供一个“种子”值,以用作随机数据。由于种子在每次调用 shuffle 函数之前都是硬编码的,因此随机数生成器每次的行为都相同。

要解决此问题(并在每次运行时获得不同的结果),只需删除此语句即可。如果你想用种子初始化它,在while循环之外初始化一次:

if __name__ == '__main__':    
    cnt = 0
    random.seed(0x87654321) 
    while cnt < 3:     
        funcA()
        time.sleep(5) 
        cnt += 1
于 2013-07-23T01:23:03.827 回答
1

您正在用常数播种随机数生成器。任何对具有相同种子的随机数生成器的相同调用序列都将产生相同的输出。如果这不是您想要的,请不要调用seed.

于 2013-07-23T01:24:14.697 回答
1

只调用一次 random.seed() ,而不是每次在随机播放之前调用。

于 2013-07-23T01:25:22.200 回答