问题标签 [birthday-paradox]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
2145 浏览

hash - 使用一个 64 位数字唯一标识 URL

这基本上是一个数学问题,但与编程非常相关:如果我有 10 亿个包含 URL 的字符串,并且我获取每个字符串的 MD5 哈希的前 64 位,我应该期望什么样的冲突频率?

如果我只有 1 亿个 URL,答案会如何变化?

在我看来,碰撞将极为罕见,但这些事情往往令人困惑。

使用MD5以外的东西会更好吗?请注意,我不是在寻找安全性,只是一个很好的快速哈希函数。此外,MySQL 的原生支持也很好。

编辑不完全重复

0 投票
4 回答
23625 浏览

hash - 哈希碰撞的例子?

出于演示目的,有哪些字符串在散列时发生冲突的示例?MD5 是一个相对标准的散列选项,所以这就足够了。

0 投票
3 回答
612 浏览

python - 为什么我在 Python 中使用 random.shuffle 得到重复?

对于 10 个整数的列表,有 10 个!可能的顺序或排列。为什么 random.shuffle 仅在 5000 次尝试后给出重复项?

编辑:FWIW,如果一对没有两个相同的概率是:p =(10! - 1)/ 10!组合数为:C = 5000!/4998!* 2!= 5000 * 4999 / 2 那么重复的概率是:

0 投票
11 回答
47704 浏览

python - 随机几乎不是随机的吗?

我这样做是为了测试 randint 的随机性:

我尝试了大约 10 次,而我得到的最好结果是在中继器之前进行了 121 次迭代。这是您可以从标准库中获得的最佳结果吗?

0 投票
5 回答
6941 浏览

c# - Random.Next() 有多随机?

我一直在对 Random 类进行一些测试,并且使用了以下代码:

我不断更改 rnd 最大限制(即 5000000)并更改了迭代次数,得到以下结果:

为什么我得到这些平均值,即在我检查每个值的 10 次中,80% 的时间我都在这个平均范围内。我不认为我们可以称它为随机。

我该怎么做才能得到一个相当随机的数字。

0 投票
1 回答
925 浏览

hash - 有人可以为我澄清生日效应吗?

请帮助解释 Wikipedia 中描述的生日效果:

生日攻击的工作原理如下:

  1. 选择任何消息 m 并计算 h(m)。
  2. 更新列表 L。检查 h(m) 是否在列表 L 中。
  3. 如果 (h(m),m) 已经在 L 中,则发现有冲突消息对。否则将 (h(m),m) 对保存在列表 L 中并返回步骤 1。

从生日悖论我们知道,在执行大约 2^(n/2) 次哈希评估之后,我们可以期望找到匹配的条目。

以上是否意味着通过上述整个循环进行 2^(n/2) 次迭代(即 2^(n/2) 返回到步骤 1),或者是否意味着与 L 中已经存在的单个项目进行 2^(n/2) 次比较?

0 投票
3 回答
2769 浏览

language-agnostic - 生日悖论:如何以编程方式估计 3 和 N 个人共享生日的概率

互联网上有大量资源讨论著名的生日悖论。我很清楚你如何计算两个人共享生日的概率,即P(same) = 1 - P(different)。但是,如果我问自己一些显然更简单的问题,我会拖延:首先,假设我生成了两个随机生日。获得相同的生日就像扔硬币一样。两个人要么共享一个生日(Heads),要么他们不共享一个生日(Tail)。运行 500 次,最终结果 (#Heads/500) 将接近 0.5

  • Q1) 但是,如果我生成三个随机生日,我该如何考虑呢?那我该如何估计概率呢?显然我的硬币类比不适用。

  • Q2)一旦我弄清楚了上述情况,我将需要扩大规模并生成 30 或 50 个生日。是否有推荐的技术或算法从大集合中分离出相同的生日?我应该将它们放入数组并循环遍历它们吗?

这是我认为我需要的:

Q1)

Q2)

  • 为 2 个重复项创建一个数组,为 3 个重复项创建一个数组,为超过 3 个重复项创建一个数组
  • 将每个生成的生日一个一个地添加到第一个数组中。但在这样做之前,请遍历数组以查看它是否已经存在。如果是这样,将其添加到第二个数组中,但在此之前重复上述过程,依此类推
  • 虽然它似乎不是一个非常有效的算法:) 建议在这里改进 Big O?
0 投票
2 回答
1444 浏览

python - 生日悖论列表是非类型的

我正在尝试用 Python 解决生日悖论。我很接近,但最后一块让我不知所措。我正在使用 random 来生成给定范围和要创建的项目数量的数字列表。这样可行。

然后我检查一个列表(上面生成的)是否有重复项。这样可行。

然后我尝试生成给定的 (n) 个列表。这是我遇到麻烦的地方。它生成一个列表然后返回“NoneType”是不可迭代的。令我困惑的是,列表已生成,但 Python 并未将其视为列表。

这是代码:

结果如下:

0 投票
2 回答
463 浏览

hash - 给定哈希长度的广义生日计算

让我们假设我们得到以下内容:

  • 哈希的长度
  • 获得碰撞的机会

现在,知道了以上内容,我们如何获得获得给定机会百分比所需的“样本”数量?

0 投票
1 回答
164 浏览

python - 在 Python 中处理大量数字时遇到问题

遇到以下问题:

有什么想法吗?我正在运行 python 2.7