首页 > 解决方案 > python3中随机库的统一(int x,int y)函数生成数字的时间复杂度是多少?

问题描述

random.uniform(x,y)

有人可以解释一下这个函数是如何生成随机数的吗?

标签: pythonpython-3.xrandomtime-complexity

解决方案


请注意,这random.uniform是一个实值/连续分布,因此它将参数解释为浮点数而不是整数。如果你真的想要一个整数版本,那么你可能想要randintor randrange

  • 的复杂性uniform与参数无关,所以它只是O(1). 它只生成 64 个均匀分布的位并将它们转换为浮点数,参见Random_random_randommodule.c

  • randrange确实取决于参数,即它需要足够的位来为每个可能的值生成一个不同的值。因此它是O(log n),其中n是范围内的选择数。见Random.randrangerandom.py

请注意,我在这里描述的是最近的 CPython,其他实现可能会做不同的事情,例如,文档说在旧版本的 CPythonrandrange中隐式为 O(1),因此不可能在大范围内生成每个值,以及略有偏见


推荐阅读