每次在脚本中获取一个随机数

时间:2016-06-15 12:45:08

标签: python python-3.x method-call

我遇到以下代码问题:

from random import randint
class character():
    __init__(self):
        #init stuff here
    def luck(self, Luck = randint(0, 3)):
        return Luck

我必须在我的脚本中多次调用此方法,对于多个实例,每次都要获取不同的数字。我遇到的问题是每当我调用这个方法时,无论从哪个实例,我总是得到相同的结果。例如,在以下代码中:

Foo = character()
Bar = character()
for foobar in range(3):
    print(Foo.luck(), Bar.luck())

我得到了我的输出:

1 1
1 1
1 1

顺便说一下,在我的代码中,我使用randint(0, 3)作为luck()方法的参数,因为在某些特定情况下,我想自己为其赋值。

回到这一点,我怎样才能每次获得不同的数字?

3 个答案:

答案 0 :(得分:3)

这是运气功能的定义。如果用户指定了一个号码,它将被返回。如果没有给出参数,则将从randint设置运气并返回该随机值。

def luck(self, Luck = None):
    if Luck is None:
        Luck = randint(0,3)
    return Luck

答案 1 :(得分:2)

在python中,设置函数参数默认值的默认表达式只执行一次。这意味着一旦定义了fixtures :all方法,第一次吐出的值luck将保留所有调用。

要在每次调用方法时获取新的随机数,您需要在方法体内调用它:

randint()

这将按预期工作。

答案 2 :(得分:0)

您可以使用None或其他内容作为默认参数,检查您是否有None,如果有,请致电randint()(如果不是仅仅返回您所获得的内容)。<登记/> 如果在函数减速中使用randint(),它将仅随机化一次。