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 分布,因此它将参数解释为浮点数而不是整数。如果你真的想要一个整数版本,那么你可能想要 randint
或 randrange
.
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),因此不可能生成大范围内的每个值,也不会略有偏差
random.uniform(x,y)
谁能解释一下这个函数是如何生成随机数的?
请注意 random.uniform
是一个 real-valued/continuous 分布,因此它将参数解释为浮点数而不是整数。如果你真的想要一个整数版本,那么你可能想要 randint
或 randrange
.
uniform
的复杂度与参数无关,所以它只是O(1)
。它只是生成 64 个均匀分布的位并将它们转换为浮点数,请参阅Random_random
in _randommodule.crandrange
确实取决于参数,即它需要足够的位来为每个可能的值生成不同的值。因此它是O(log n)
,其中n
是范围内的选项数。见Random.randrange
in random.py
请注意,我在这里描述的是最近的 CPython,其他实现可能会做不同的事情,例如docs say 在旧版本的 CPython randrange
中隐式为 O(1),因此不可能生成大范围内的每个值,也不会略有偏差