为什么Python随机生成相同的数字?

daw*_*win 3 python random python-3.x

我为我的作业写了这段代码:

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")
Run Code Online (Sandbox Code Playgroud)

我在电脑上运行了很多次,结果都是一样的。讽刺的是,在其他计算机上,结果与我的计算机不同,而且每次执行时都会重复。

我的代码有什么问题吗?

Mik*_*mes 5

random.seed(n)每次运行程序时,都会从同一点启动随机数生成器。

也就是说,您得到相同的随机数序列。这就像拍摄掷骰子的视频,然后每次播放它 - 数字是随机的(准确地说是伪随机),但您正在播放序列。

这对于测试很有用,例如:您可以使用相同的随机数运行程序的不同版本,因此您可以确定结果的差异仅是由于程序造成的,而不是偶然的。

取出 random.seed ,您将得到一个从随机位置开始的序列。(在大多数计算机上,如果您不指定种子,则程序启动的时钟时间将隐式用作种子。)