每次使用变量时都会生成新的随机数吗?

时间:2020-10-24 15:14:47

标签: python random

我刚刚注意到,当我运行这段代码时:


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))

但是我想使用变量,因为我有一个庞大的代码,并且如果我做了一些更改,也不想遍历所有代码。提前非常感谢!

6 个答案:

答案 0 :(得分:1)

您最好的选择是定义自己的功能来进行睡眠。这样,您可以随时更改它,而无需触摸其余代码。例如:

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

然后,您可以将对time.sleep(delay)的呼叫替换为:

my_sleep()

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

答案 1 :(得分:0)

结合使用您的方法和@TomKarzes

itemExtent

在适当的时候可以使用

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

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

答案 2 :(得分:0)

不确定要尝试实现什么,但是唯一可以做的就是使delay为一个函数:

import random

def delay():
  return random.randint(1,5)

for x in range(1, 101):
    print(x)
    time.sleep(delay())

答案 3 :(得分:0)

如果这是您当前所有引用的场景都指向同一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...

恐怕您不做大量工作就无法做到。

答案 4 :(得分:0)

这样,每次循环迭代时,循环将被迫使用新的随机种子,这导致延迟时间在每次迭代中不同的可能性更高。希望我理解你的问题。

import random
import time

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

答案 5 :(得分:-1)

import random
import time

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