python随机列表总是相同,但在其他计算机上不同

时间:2018-04-13 08:27:28

标签: python python-3.x random

import random
score=[]
random.seed(1)
for i in range(0,100):
    score.append(random.randrange(0,21))

for k in range(20, -1, -1):
    print("Who get %2d score in test? : "%(k), end='')
    while score.count(k)!=0:
        j = score.index(k)
        print("%3s" % (j), end="  ")
        score.remove(k)
        score.insert(j,25)
    print("\n")

我为我的作业写了这段代码。但是当我运行它时,即使我使用了随机导入,它的结果总是一样的。具有讽刺意味的是,在其他计算机中,如朋友的计算机,代码会得到不同的结果,但它会再次重复。我的代码有什么问题?

2 个答案:

答案 0 :(得分:2)

每次运行程序时,

random.seed(n)都会从同一点启动随机数生成器。

那就是你获得相同的随机数序列。这就像拍摄骰子的视频然后每次播放一样 - 数字是随机的(伪随机准确)但你正在播放序列。

这对于测试非常有用,例如:您可以使用相同的随机数运行不同版本的程序,因此您可以确定结果的差异仅仅取决于程序,而非机会。

随机取出,你会得到一个从随机位置开始的序列。 (在大多数计算机上,如果您没有指定种子,程序启动的时钟时间将被隐含地用作种子。)

答案 1 :(得分:0)

写作时

random.seed(1)

您要说的是始终使用相同的随机生成数字序列,因此您始终拥有相同的结果。 当我在计算机上运行时也会发生这种情况。

只需删除该行,每次都应该有不同的随机生成的数字。

有关种子的解释,请参阅this answer

the python documentation for the random library