python - python3中随机库的统一(int x,int y)函数生成数字的时间复杂度是多少?
问题描述
random.uniform(x,y)
有人可以解释一下这个函数是如何生成随机数的吗?
解决方案
请注意,这random.uniform
是一个实值/连续分布,因此它将参数解释为浮点数而不是整数。如果你真的想要一个整数版本,那么你可能想要randint
or randrange
。
的复杂性
uniform
与参数无关,所以它只是O(1)
. 它只生成 64 个均匀分布的位并将它们转换为浮点数,参见Random_random
_randommodule.crandrange
确实取决于参数,即它需要足够的位来为每个可能的值生成一个不同的值。因此它是O(log n)
,其中n
是范围内的选择数。见Random.randrange
random.py
请注意,我在这里描述的是最近的 CPython,其他实现可能会做不同的事情,例如,文档说在旧版本的 CPythonrandrange
中隐式为 O(1),因此不可能在大范围内生成每个值,以及略有偏见
推荐阅读
- php - 可以为用户分配自定义帖子类型
- java - Math.log 背后的算法 - Java
- arrays - 在不更改 Python 3 中的数据的情况下从字符串转换为字节
- tfs - 功能和看板的 TFS 新状态
- javascript - Highcharts 柱形图延伸出容器并且没有正确显示 X 轴
- powerbi - 有没有办法在 Power BI 的查看模式下创建书签
- java - 包 org.languagetool.language.BritishEnglish 不存在
- javascript - 覆盖移动设备的引导日期选择器的大小
- mongodb - Mongoid 6.3 在哪里查询不起作用
- javascript - 如何将这个用于画布应用程序的功能性 javascript 更改为面向对象的应用程序?