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

Getting a random number each time in a script

我在使用以下代码时遇到问题:

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() 方法的参数,因为在某些特定情况下,我想自己给它赋值。

回到正题,如何才能每次取到不同的号码呢?

在python中,设置函数参数默认值的默认表达式只执行一次。这意味着一旦你定义了 luck 方法,无论什么值 randint() 第一次吐出都将保留用于所有调用。

要每次调用方法得到一个新的随机数,需要在方法体内调用:

class Character(object):
    @staticmethod # required if you're not accepting `self`
    def luck():
        return randint(0, 3)

这将按预期工作。

这是运气函数的定义。如果用户指定一个数字,它将被返回。相反,如果没有给出参数,Luck 将从 randint 开始设置并返回随机值。

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

你可以使用 None 或其他东西作为默认参数,检查你是否有 None 如果你有 - 调用 randint() (如果不只是 return 什么你确实得到了)。
如果您在函数减速中使用 randint(),它只会随机化一次。