python随机生成的命令是一样的

时间:2013-07-23 01:21:11

标签: python python-2.7

我试图在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

3 个答案:

答案 0 :(得分:2)

这里的问题出在本声明中:

random.seed(0x87654321)  

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

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

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

答案 1 :(得分:1)

您正在使用常量为随机数生成器播种。对具有相同种子的随机数发生器的任何相同调用序列将产生相同的输出。如果那不是您想要的,请不要致电seed

答案 2 :(得分:1)

只调用一次random.seed(),而不是每次调用之前。