tpa*_*arf 1 python random seeding
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
Run Code Online (Sandbox Code Playgroud)
对于一个班级,我们在python中制作一个"婴儿僵尸网络".因此,如果我调用命令xyzzy或boo,它们每3秒执行一次(直到我告诉他们停止).当我调用boo时,它选择一个随机元素,但它每3秒打印一次相同的随机元素.当我调用xyzzy时,它每隔3秒打印一个新的随机元素.
从我的理解,这意味着种子不会改变嘘声,但它确实改变了xzyyz.我的问题是,为什么种子会改变一种情况而不是另一种情况呢?
它在这里做出选择
"boo" : random.choice(["Winter is coming...","SURPRISE!","Mazel tov!"]),
Run Code Online (Sandbox Code Playgroud)
因为你正在调用这个函数.在评估此行后,您的dict将变为如下所示:
known_commands = {
"boo" : "SURPRISE!",
"xyzzy" : xyzzy,
}
Run Code Online (Sandbox Code Playgroud)
但是xyzzy每次都会获得一个随机字符串,因为每次调用时都会在函数中进行选择.为了每次都为boo获取一个随机字符串,你应该创建一个函数或一个lambda.用lambda看起来像这样:
known_commands = {
"boo" : lambda: random.choice(["Winter is coming...","SURPRISE!","Mazel tov!"]),
"xyzzy": xyzzy,
}
Run Code Online (Sandbox Code Playgroud)