Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >循环的大O值,迭代次数不确定。

循环的大O值,迭代次数不确定。
EN

Stack Overflow用户
提问于 2022-01-16 14:21:07
回答 1查看 98关注 0票数 1

对于具有不确定迭代次数的while循环,我似乎无法合理地说明大O符号的合理性。

在我的个人项目代码中,我有一个包含所有0的列表。然后,我实现了一个while循环,该循环将在0到9之间生成一个随机整数。如果随机数索引处的列表中的值为0,则该值被写入1,而while循环退出。否则,将再次生成一个随机数,并重复该过程。

不过,我不完全确定这会有多复杂。例如,如果在算法的9次迭代之后,除了索引9之外,列表中的每个值都是1,如果随机数生成器恰好没有生成数字9,比如说99次迭代,那么它将在99 +9迭代之后退出。最坏的情况不是O(无穷大)吗?我不认为这是可能的,但我想我应该问,因为我不确定。

我的教科书和在线资源似乎并没有提供像这样的例子太多的洞察力。我确信最好的情况是O(1),但对于一般情况和最坏情况,我有点不确定。

我发现了一个类似的问题,有着同样的前提。这里是伪码,其中n是任意大小的整数:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sample_found = false
while(!sample_found) {
    if (rand(0,n) == 0) {
        sample_found = true
    }
}

在最坏的情况下,这将是无限的,对吗?我也不确定普通的案子。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-01-17 10:18:10

这听起来像是在使用IID 伯努利审判来控制循环,并且有可能继续运行。假设是这样的话,您可以只使用几何分布

这个发行版的平均值是1/p,所以10,我会使用分位数来进一步了解需要完成多少绘图。例如:

  • 10%的时间,你会期望立即完成
  • 50%的运行需要循环6次或更少
  • 90%的跑完21圈
  • 99%的跑完43圈

以R为单位计算,使用qgeom(c(0.1, 0.5, 0.9, 0.99), 0.1)

最坏的情况显然是无限大的,但实际上你不太可能循环200次。1-pgeom(200, 0.1)提供了6e-10,所以在需要等待这么多迭代之前,您可以期望迭代超过10亿次。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70734653

复制
相关文章
迭代循环:for语句
• 简单类型用来表示值:整数int、浮点数float、复数complex、逻辑值bool、字符串str
陆勤_数据人网
2020/08/27
8190
[一起学RL] 策略迭代和值迭代
上一次分享了十个问题认识MDP,强化学习的目的是要找到一个策略π,使得累积回报的期望最大。这次和大家分享如何在MDP下做决策以及如何得到各个状态对应不同动作下的v值。如果想详细学习的可前往“参考”中的链接。
秋枫学习笔记
2022/09/19
1.6K0
python中限制循环次数
for i in range(5):#循环5次         print 'Loop', i
py3study
2020/01/08
2.7K0
python - 可迭代/迭代器对象、for循环原理
目录 可迭代对象与迭代器对象 for循环本质 可迭代对象与迭代器对象 迭代:迭代的意思就是更新换代,每次的更新都必须依赖上一次的结果 迭代其实给我们提供了一种不依赖索引取值的方式 可迭代对象: 内置有 _ _ iter _ _方法的都称为可迭代对象 有字符串、列表、元组、字典、集合、文件对象 迭代器对象: 内置有 _ _iter _ _ 方法,又含有 _ _next _ _方法称为迭代器对象 文件本身即是可迭代对象,也是迭代器对象 可迭代对象调用_ _it
HammerZe
2022/03/25
9320
clang -O3 for循环的LLVM IR
这里删去了用处不大的内容,只保留了关键的LLVM IR。通过分析可以看到,如果循环小于8 LLVM IR会使用vector,vector使用SIMD指令高效进行计算,如果大于8则是普通的for形式。
racaljk
2018/08/31
1.3K0
迭代循环丨SUMX函数
白茶在之前的一期,曾经分享过RANKX排名的问题,但是白茶当时犯了一个很严重的错误,这里和小伙伴们说一声抱歉。本期呢,既是纠正这个错误,也是学习另一个函数——迭代循环函数之SUMX。
PowerBI丨白茶
2021/09/01
1.1K0
迭代循环丨SUMX函数
【译】大O的友好指南
原文链接:https://medium.com/@daily_javascript/a-friendly-guide-to-big-o-ea781c5f68f0
Jackeyzhe
2020/03/11
4380
【译】大O的友好指南
R:purrr包用于循环迭代
purrr中有多个迭代函数,可以用于快速解决循环迭代的问题,purrr中常用的迭代函数有map、map2、walk、reduce等等。
生信菜鸟团
2020/07/16
1.6K0
再探循环、迭代、分治、回溯
采用“试错”思想,尝试“分步”去解决问题。在分步的过程中。根据上层结果,尝试此层最优解决此问题,如果此层较于上层不是最优则回溯。
PayneWu
2020/12/18
3450
O(1)最大值最小值的均值滤波算法
之前做过最大值最小值滤波基本上复杂度是非常高的,因为涉及到遍历w*h的滑动窗口中的所有值然后求出这个窗口所有值的最大和最小值。尽管可以使用sse优化,但速度仍然快不起来,最近在ImageShop博主的一篇博客中遇见了这篇论文,https://files-cdn.cnblogs.com/files/Imageshop/O(1)%E6%9C%80%E5%A4%A7%E5%80%BC%E6%9C%80%E5%B0%8F%E5%80%BC%E7%AE%97%E6%B3%95.pdf ,讲的就是O(1)实现最大最小值滤波,所以希望与大家一起分享这个算法。
BBuf
2019/12/04
2K0
O(1)最大值最小值的均值滤波算法
算法大O表示法
在计算机编程算法中,O 是用来描述函数增长率的符号,来源于数学中的大O符号,也叫做大O表示法或者渐进表示法。它的全称是“Order of”,翻译过来就是“某某的数量级”。
运维开发王义杰
2023/08/10
2830
算法大O表示法
算法:大O符号解释
该文介绍了算法大O符号的含义,并列举了一些常见的符号。文章还通过一些例子解释了线性时间、恒定时间、对数时间等概念。
大数据弄潮儿
2017/12/21
1.3K0
算法:大O符号解释
利用 for 循环计算 n! 的值
阶乘是基斯顿·卡曼(Christian Kramp,1760~1826)于 1808 年发明的运算符号,是数学术语。 一个正整数的阶乘(factorial)是所有小于及等于该数的正整数的积,并且0的阶乘为1。自然数n的阶乘写作n!。1808年,基斯顿·卡曼引进这个表示法。 亦即n!=1×2×3×...×(n-1)×n。阶乘亦可以递归方式定义:0!=1,n!=(n-1)!×n。
Skykguj
2022/09/09
1.7K0
追根揭底-循环\迭代\分治详细使用
Multiple solutions of Fibonacci(Python or Java) Violence law(Top-down) It can be solved directly according to the known conditions (f (0) = 0, f (1) = 1 F(N) = F(N - 1) + F(N - 2), for N > 1) Python Code class Solution: def fib(self, N: int) -> int: if N =
PayneWu
2020/12/18
6040
Solidity 优化 - 编写 O(1) 复杂度的可迭代映射
我们探索及讨论了在以太坊[6]独特的 EVM 成本模型下编写高效 Solidity 代码的数据结构和实现技术。读者应该对 Solidity 中的编码以及 EVM 的总体工作方式有所了解。
Tiny熊
2020/11/03
1.2K0
Solidity 优化 - 编写 O(1) 复杂度的可迭代映射
ES6 的循环和可迭代对象
首先是经典的 for i 循环,它使你可以遍历数组或可索引的且有 length 属性的任何对象。
疯狂的技术宅
2020/09/01
1.9K0
ES6 的循环和可迭代对象
iOS 获取gif图片循环次数和时长
//获取gif图片的总时长和循环次数 - (NSTimeInterval)durationForGifData:(NSData *)data{ //将GIF图片转换成对应的图片源 CGImageSourceRef gifSource = CGImageSourceCreateWithData((__bridge CFDataRef)data, NULL); //获取其中图片源个数,即由多少帧图片组成 size_t frameCout = CGImageSourceGetCo
且行且珍惜_iOS
2018/05/22
3.7K1
随机1-100的数循环找出88的次数
int i=(int)Math.round(100*Math.random());
算法与编程之美
2023/01/03
4480
随机1-100的数循环找出88的次数
什么是大O表示法
做了这么多年的程序员,是不是一直靠着自己的聪明伶俐在编码,数据结构和算法是前辈们的心血和经验总结,不可错过。
码农神说
2020/08/05
1.3K0
什么是大O表示法
[编程] C语言循环结构计算π的值
分析:首先,系数为正数的项的分母是4n-3(n为正数项的项数),为负数的项的分母为4n-1(n为负数项的项数),即分母的变化规律是1、3、5、7...的奇数数列,则第n项的分母为2n-1,第10000项的分母为2*10000-1。
唯一Chat
2019/09/10
3.5K0

相似问题

(大O)在嵌套循环中查找迭代次数

10

时间循环迭代的大O值

12

循环运行次数计数(大O)

30

嵌套循环中的乘法次数:大O

13

嵌套循环的大O是什么,内循环中的迭代次数是由外部循环的当前迭代决定的?

811
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文