random.randint(2,12)每次在Python中运行时都会返回相同的结果

时间:2015-11-19 14:00:54

标签: python python-3.x random

我有一个脚本可以在2到12之间生成10个随机数:

repetition = 10
while repetition > 0:
    print(random.randint(2,12))
    repetition = repetition - 1

执行此代码时会生成10个随机数,但每次执行代码时都会生成相同的10个随机数。即使我在另一台计算机上运行代码,也会发生这种情况!

4 个答案:

答案 0 :(得分:1)

我在做

时遇到了同样的问题
from random import randint
randint(0, 10)

现在我只是做

import random

然后

random.randint(0, 10)

并且有效

答案 1 :(得分:0)

你应该理解的第一件事是计算机生成的随机数并不是随机的。为了生成伪随机数,计算机使用基于先前值生成数字的函数(https://en.wikipedia.org/wiki/Random_number_generation中的更多细节)。伪随机数序列取决于传递给此函数的第一个值,称为种子

默认情况下,Python的随机模块使用的Random类'构造函数(__init__)中,种子由操作系统定义。这通常基于当前系统时间。如果您使用函数random.seed定义了自己的种子,那么您的结果将是确定性的。在这种情况下,您将始终获得相同的值。

答案 2 :(得分:0)

您可以根据时间设置种子值。每次调用都会改变种子值。

import random
import time
random.seed(time.clock())
repetition = 10
while repetition > 0:
   print(random.randint(2,12))
   repetition = repetition - 1

答案 3 :(得分:0)

#尝试numpy:

将numpy导入为np

np.random.randint(low = 1,high = 7,size = 10)

#最有可能的是,每次运行后它将为您提供不同的结果。