Python3 randrange给出相同的结果

Sha*_*amp 3 python random python-3.x

所以我正在制作一个小型文本游戏,我想要做的一件事就是从一系列变量中获取一个随机数.

出于测试目的,我编写了一个代码如下:

slow_speed = random.randrange(10,25)
medium_speed = random.randrange(26, 50)
fast_speed = random.randrange(51, 75)

penalty_list = [slow_speed, medium_speed, fast_speed]

for i in range(3):
    for penalty in penalty_list:
        print(penalty)
Run Code Online (Sandbox Code Playgroud)

这个想法是它会循环遍历列表3次,每次为每个范围提供不同的随机数.

然而,会发生的是我得到相同的3个数字循环3次.我想这是因为当我调用函数时种子(我的计算机上的时间)是相同的,所以我试图添加time.sleep()和random.seed(),但这没有帮助.

那么我该如何解决这个问题呢?谢谢!

gtl*_*ert 5

您需要将变量声明放在for循环中.这样,在每次迭代期间生成随机数.以下可能是您正在寻找的:

import random

for i in range(3):
    slow_speed = random.randrange(10,25)
    medium_speed = random.randrange(26, 50)
    fast_speed = random.randrange(51, 75)
    penalty_list = [slow_speed, medium_speed, fast_speed]

    for penalty in penalty_list:
        print(penalty)
Run Code Online (Sandbox Code Playgroud)

样本输出

13
31
63
17
26
61
16
46
67
Run Code Online (Sandbox Code Playgroud)