Python的随机性似乎是全局性的,所以改变它的模块会相互影响.

当然有很多第三方模块,但有没有一种方法可以使用Python的标准库在上下文本地生成一个随机数.

(不使用random.get/setstate,这在混合来自不同模块的代码时可能会有问题).

比如...

r = random.context(seed=42)
number = r.randint(10, 20)

每个模块都可以使用自己的随机上下文.

推荐答案

From the docs:

这个模块提供的函数实际上是random.Random类的一个隐藏实例的绑定方法.您可以实例化自己的Random实例,以获得不共享状态的生成器.

制作自己的random.Random个实例并使用它.

rng = random.Random(42)
number = rng.randint(10, 20)

Python-3.x相关问答推荐

如何将CSV或FDF数据解析到Python词典并注入到模板PDF表单中?

无法使用诗词安装PyYaml

无法使用Python slack 螺栓SDK读取在 slack 通道中收到的消息

如何从选定的html内容中获取所需的文本

不同的焦点顺序和堆叠顺序 tkinter

如何获取实例化 `types.GenericAlias` 的下标类?

如何在 Telethon 中向机器人发送发送表情符号

裁剪复数以解决 exp 中的溢出错误

Python Regex 查找给定字符串是否遵循交替元音、辅音或辅音、元音的连续模式

matplotlib.pyplot 多边形,具有相同的纵横比和紧凑的布局

将元组列表转换为以整个元组为键的字典列表

FastAPI - 调用 API 时设置 response_model_exclude

解包时是否可以指定默认值?

全局捕获快速 api 中的异常

如何使用python将放置在多个嵌套文件夹中的文档移动和重命名为一个新的单个文件夹?

如何获得 BeautifulSoup 标签的所有直接子代?

Python - 类 __hash__ 方法和集合

如何在 QGraphicsView 中启用平移和zoom

同步调用协程

Python:如何在 Windows 资源管理器中打开文件夹(Python 3.6.2、Windows 10)