每次使用时间变量都生成新的随机数



我刚刚注意到,当我运行以下代码时:


import random
import time
delay = random.randint(1,5)
for x in range(1, 101):
print(x)
time.sleep(delay)

delay变量将始终相同,因为它是在开始时确定的。有没有办法为每个循环中的delay变量生成一个介于1和5之间的新随机数?现在,很明显我可以做这样的事情:


import random
import time
for x in range(1, 101):
print(x)
time.sleep(random.randint(1,5))

但我想使用变量,因为我有一个庞大的代码,如果我更改了一些内容,我不想遍历所有代码。非常感谢!

您最好的选择是定义自己的函数来执行睡眠。这样,您就可以随时更改它,而不必触摸代码的其余部分。例如:

def my_sleep():
time.sleep(random.randint(1,5))

然后您可以将对time.sleep(delay)的调用替换为:

my_sleep()

您需要将它们全部替换一次,但之后您可以更改my_sleep,而无需再次更改它们。

混合使用您的方法和@TomKarzes:

small_delay = 5
big_delay = 10
huge_delay = 30
def my_sleep(delay):
time.sleep(random.randint(1, delay))

在适当的时候,您可以使用

my_sleep(small_delay)    # 1-5 seconds

my_sleep(big_delay)      # 1-10 seconds

在您的代码中。如果要更改整个延迟范围,请修改顶部的变量。

不确定你试图实现什么,但你唯一能做的就是让delay成为一个函数:

import random
def delay():
return random.randint(1,5)
for x in range(1, 101):
print(x)
time.sleep(delay())

如果这是您当前的场景,所有场景都引用了相同的delay:

...omitted...
delay = random.randint(1,5)
#first for loop
for x in range(1, 101):
print(x)
time.sleep(delay)
#another for loop
for x in range(1, 101):
print(x)
time.sleep(delay)
...so on...
for x in range(1, 101):
...omitted...

恐怕你做这件事不需要做大量的工作。

这样,每次迭代循环时,循环都将被迫使用一个新的随机种子,这导致每次迭代延迟时间不同的概率更高。希望我理解你的问题。

import random
import time
for x in range(1, 101):
random.seed(x)
delay = random.randint(1,5)
print(x)
time.sleep(delay)
import random
import time
for x in range(1, 101):
delay = random.randint(1,5)
print(x)
time.sleep(delay)

最新更新