- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
This question从有限集合中获取随机值让我思考......
人们想要从一组 Y 值中检索 X 唯一值是相当普遍的。例如,我可能想处理一副牌中的一手牌。我想要 5 张卡片,而且我希望它们都是独一无二的。
现在,我可以天真地做到这一点,通过随机选择一张卡片 5 次,每次我得到重复的时候再试一次,直到我得到 5 张卡片。然而,对于来自大型集合的大量值,这并不是很好。例如,如果我想要 1,000,000 组中的 999,999 个值,这种方法就会变得非常糟糕。
问题是:有多糟糕?我在找人来解释 O() 值。获得第 x 个数字需要 y 次尝试……但有多少?我知道如何针对任何给定值计算出这一点,但是有没有一种直接的方法可以将其概括为整个系列并获得 O() 值?
(问题不是:“我怎样才能改进它?”因为它相对容易修复,而且我确信它在其他地方已经多次讨论过。)
最佳答案
变量
= 集合中的项目总数
米 = 要从 n 个项目的集合中检索的唯一值的数量
d(i) = 在步骤 i 中达到某个值所需的预期尝试次数
我 = 表示一个特定的步骤。 i∈[0, n-1]
T(m,n) = 使用朴素算法从一组 n 个项目中选择 m 个唯一项目的预期总尝试次数
推理
第一步,i=0,是微不足道的。无论我们选择哪个值,我们都会在第一次尝试时得到一个唯一的值。因此:
d(0) = 1
d(1) = 1 + 1/n + (1/n) 2 + (1/n) 3 + (1/n) 4 + ...
d(i) = 1 + i/n + (i/n) 2 + (i/n) 3 + (i/n) 4 + ... =
= sum( (i/n) k ), where k ∈ [0,∞]
d(i) = (1 - i/n) -1
T(m,n) = sum ( d(i) ), where i ∈ [0,m-1] =
= 1 + (1 - 1/n) -1 + (1 - 2/n) -1 + (1 - 3/n) -1 + ... + (1 - (m-1)/n) -1
T(m,n) = n/n + n/(n-1) + n/(n-2) + n/(n-3) + ... + n/(n-m+2) + n/(n-m+1)
n/n ≤ n/(n-1) ≤ n/(n-2) ≤ n/(n-3) ≤ ... ≤ n/(n-m+2) ≤ n/(n-m+1)
T(m,n) ≤ n/(n-m+1) + n/(n-m+1) + n/(n-m+1) + n/(n-m+1) + ... + n/(n-m+1) + n/(n-m+1) =
= m*n/(n-m+1)
关于math - 从有限集中进行朴素随机选择的 O 值是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1293939/
我有一个关于复杂性的简单问题。我在 Java 中有这段代码: pairs是 HashMap包含 Integer作为键,它的频率为 Collection作为一个值。所以: pairs = new Has
对于我的应用程序,我需要在 Coq 中使用和推理有限映射。谷歌搜索我发现 FMapAVL 似乎非常适合我的需求。问题是文档很少,我还没有弄清楚我应该如何使用它。 作为一个简单的例子,考虑以下使用对列表
我有一个主表tblAssetMaster A和一个移动表tblMovement M。 我想提取所有 Assets 及其当前位置,因此需要获取每个 Assets 的最新移动条目。 字段 A: Asset
我想让我的网站内容居中,但仅限于网页的特定宽度。所以当它超过 500px 时,我希望内容被修复,无法进一步拉伸(stretch)。无论如何都要这样做,还是我最好把所有东西都修好?希望有意义的是添加一些
我正在尝试批量删除 Backbone 模型的集合,如下所示...... collection.each(function(model, i){ model.destroy(); }); 我发现当每
我想要一个软件环境,在其中我可以在具有特定资源的硬件上测试我的软件的速度。例如,当我的主机硬件是具有 12GB RAM 的 3GHz 四核 amd64 时,该程序在具有 24 Mb RAM 的 800
在 Eclipse 中,我得到了 BigInteger.valueOf(2).pow(31093) 的值,但没有得到 BigInteger.valueOf(2).pow(31094) 的值(它是空的)
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 要求提供代码的问题必须表现出对所解决问题的最低限度理解。包括尝试过的解决方案、为什么它们不起作用,以及预
我想将 2 个表从本地 sql server 2000 上传到托管的 mysql。第一个表有 17 列和 680 行,其他 10 列和 8071 行。 我首先使用 xampp mysql 尝试离线,它
我在 S3 中自动生成并保存了静态 html 文件。有时文件大小达到 2mb。是否可以使用javascript来获取html文件的一部分,显示它,当用户到达页面底部时,获取下一部分等等? 最佳答案 X
我是一名优秀的程序员,十分优秀!