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

what is Time Complexity of generating number from uniform(int x,int y) function of random library in python3?

random.uniform(x,y)

谁能解释一下这个函数是如何生成随机数的?

请注意 random.uniform 是一个 real-valued/continuous 分布,因此它将参数解释为浮点数而不是整数。如果你真的想要一个整数版本,那么你可能想要 randintrandrange.

  • uniform 的复杂度与参数无关,所以它只是 O(1)。它只是生成 64 个均匀分布的位并将它们转换为浮点数,请参阅 Random_random in _randommodule.c

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

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