gpt4 book ai didi

python - 'random' 的独立实例

转载 作者:太空狗 更新时间:2023-10-29 17:12:31 24 4
gpt4 key购买 nike

下面的代码试图说明我想要什么。我基本上想要两个彼此独立运行的“随机”实例。我想在一个类(class)内播种“随机”而不影响另一类(class)的“随机”。我该怎么做?

class RandomSeeded:
def __init__(self, seed):
import random as r1
self.random = r1
self.random.seed(seed)
def get(self):
print self.random.choice([4,5,6,7,8,9,2,3,4,5,6,7,])

class Random:
def __init__(self):
import random as r2
self.random = r2
self.random.seed()
def get(self):
print self.random.choice([4,5,6,7,8,9,2,3,4,5,6,7,])

if __name__ == '__main__':
t = RandomSeeded('asdf')
t.get() # random is seeded within t
s = Random()
s.get()
t.get() # random should still be seeded within t, but is no longer

最佳答案

random.Random 类的存在专门用于实现您想要的行为——模块本质上是单例,但类应该被多重实例化,因此这两种需求都得到了满足。

如果你需要一个模块的独立副本(在 random 的情况下你肯定不需要!),请尝试在其上使用 copy.deepcopy - - 在许多情况下它会起作用。然而,这种需求非常少见,因为模块通常不会保留全局可变状态,除非保留类的一个特权实例,它们还提供“外部消费”(random 之外的其他示例包括 文件输入).

关于python - 'random' 的独立实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2219436/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com