Python3 randrange给出了相同的结果
所以我在做一个小的文本游戏,我想做的一件事就是从一系列变量中得到一个随机数 出于测试目的,我编写了如下代码:Python3 randrange给出了相同的结果,python,python-3.x,random,Python,Python 3.x,Random,所以我在做一个小的文本游戏,我想做的一件事就是从一系列变量中得到一个随机数 出于测试目的,我编写了如下代码: 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): f
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)
其思想是,它将在列表上循环3次,每次为每个范围提供不同的随机数
然而,发生的是,我得到相同的3个数字循环3次。我想这是因为当我调用函数时,seed(我计算机上的时间)是相同的,所以我尝试添加time.sleep()和random.seed(),但没有帮助
那么我该如何解决这个问题呢?
谢谢 您需要将变量声明放入
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)
样本输出
13
31
63
17
26
61
16
46
67
将速度定义为元组范围,然后对其调用
random.randrange
。使用*
解压元组对中的参数
slow_speed = (10,25)
medium_speed = (26, 50)
fast_speed = (51, 75)
penalty_list = [slow_speed, medium_speed, fast_speed]
for i in range(3):
for penalty in penalty_list:
print(random.randrange(*penalty))
# Output:
17
43
59
11
38
61
24
35
54
或者把整件事列成一个清单:
>>> [[random.randrange(*penalty) for penalty in penalty_list] for _ in range(3)]
[[21, 27, 73], [10, 47, 72], [10, 35, 55]]
你不会在每个循环中生成随机数,这就是原因。想象一下使用打字机,然后在按键上发出一声猴子的砰砰声。一旦锤子敲到墨水带上,字母印在纸上,这些字母就不会再改变了。你可以在纸上重新阅读由此产生的胡言乱语,但胡言乱语将保持不变。如果你想听到不同的胡言乱语,在打字机里放更多的纸,然后让猴子再次敲击键盘
random.randrange()
就是那个猴子,它会返回一个int
对象;那是报纸。在循环中打印这些整数不会改变结果,您需要返回并在循环中每次按下键:
什么是
慢速处罚
,中等处罚
和快速处罚
?它们似乎不是随机生成的谢谢,我改变了问题。惩罚也是rand.range函数,只是我不小心选择了错误的函数来回答问题。random.randrange()
返回一个整数,而不是一个每次打印时都会改变值的对象。如果需要新值,请生成更多整数(每次再次调用random.randrange()
),这些数字仅在首次选择时随机出现。谢谢你的精彩解释!
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)
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)