每次在脚本中获取一个随机数
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()
,它只会随机化一次。
我在使用以下代码时遇到问题:
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()
,它只会随机化一次。