首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >循环的大O值,迭代次数不确定。

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

Stack Overflow用户
提问于 2022-01-16 22: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
运行
复制
sample_found = false
while(!sample_found) {
    if (rand(0,n) == 0) {
        sample_found = true
    }
}

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-01-17 18: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

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档