known_commands = {
"boo" : random.choice(["Winter is coming...","SURPRISE!","Mazel tov!"]),
"xyzzy": xyzzy,
}
def xyzzy(self):
print random.choice(["Winter is coming...","SURPRISE!","Mazel tov!"])
return
对于一个类,我们正在用 Python 制作一个“婴儿僵尸网络”。因此,如果我调用命令 xyzzy 或 boo,它们将每 3 秒执行一次(直到我告诉它们停止)。当我调用 boo 时,它会选择一个随机元素,但它每 3 秒打印一次相同的随机元素。当我调用 xyzzy 时,它每 3 秒打印一个新的随机元素。
据我了解,这意味着种子不会因 boo 而改变,但会因 xzyyz 而改变。我的问题是,为什么种子在一种情况下会发生变化而在另一种情况下不会发生变化?
最佳答案
它在这里做出选择
"boo" : random.choice(["Winter is coming...","SURPRISE!","Mazel tov!"]),
因为您正在调用该函数。评估此行后,您的字典将变成如下所示:
known_commands = {
"boo" : "SURPRISE!",
"xyzzy" : xyzzy,
}
但是 xyzzy 每次都会得到一个随机字符串,因为每次调用时都会在函数中做出选择。为了每次都为 boo 获取一个随机字符串,您应该创建一个函数或一个 lambda。使用 lambda 看起来像这样:
known_commands = {
"boo" : lambda: random.choice(["Winter is coming...","SURPRISE!","Mazel tov!"]),
"xyzzy": xyzzy,
}
关于python - python中的random.choice([x, y, z]),为什么种子没有改变?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10129355/