球探体育 >足球新闻 >欧冠新闻 >两枚硬币挑战全攻略:从基础2到百万进阶

两枚硬币挑战全攻略:从基础2到百万进阶

时间:2026-04-07 21:15:08浏览:718

标题是“进阶的两枚硬币——应战从 2 到 1000000”。

此算法输入 0 和 1 的概率严厉 1/2,且希冀投掷次数有上界(与 p,q 有关),适宜 p 极端小的状况。

5. 否则,比拟 (a,b) 和 (a',b')(按字典序),若 (a,b) > (a',b') 则输入 1,否则输入 0。

4. 假设 (a,b) = (a',b'),回到 1。

3. 再投 A 得 a',再投 B 得 b',失掉 (a',b')。

2. 假设 a = b,回到 1。

1. 投硬币 A(概率 p),投硬币 B(概率 q),失掉 (a,b)。

最终答案思绪(算法描画):

- 已知可以用两枚硬币的交叉比拟,到达有界的希冀时间,不随 p→0 而猛烈添加。

- 要求设计一个算法,用它们生成公允的 1/2 概率,并能够要求希冀投掷次数尽量少。

- 给定两枚硬币,正面概率区分是 ( frac{2}{N} ) 和 ( frac{999999}{N} ) 这类极端值(N=1000000)。

标题“进阶的两枚硬币——应战从 2 到 1000000”很能够是指:

8. 结论

已知最优通用两枚未知有偏硬币(但知 p≠q)模拟公允硬币的希冀投掷次数是 O(1) 的,与 p,q 有关(有界),但常数能够较大。

用两枚硬币方法,能够更快,由于可以设计成应用 B 的平衡性。

单枚硬币方法用 A 的话,希冀掷币次数 ~ ( 1/(p(1-p)) approx 1/p = 500000 ) 次。

假设 p 极小,q 不太接近 p,那么

7. 针对 p=2/1000000, q 未知但 ≠ p 的状况

这样成功概率与 p,q 有关且大于 0,即使 p 很小,只需 q 不接近 p,效率不会太差。

投 A 一次得 a,投 B 一次得 b,假设 a=b 重投;假设 a≠b,则再投 A 得 a',投 B 得 b',假设 (a,b) 与 (a',b') 相等则重试,否则比拟它们输入。

已知算法:

用两枚硬币(p 和 q 不同)能够可以改善希冀时间。

当 p 很接近 0 或 1 时,( p(1-p) ) 很小,效率很低。

成功概率 ( 2p(1-p) ),希冀尝试次数 ( frac{1}{2p(1-p)} ) 次尝试,每次尝试 2 掷,所以希冀掷币次数 ( frac{1}{p(1-p)} )。

关于单枚硬币方法(投两次看能否 01 或 10):

6. 希冀投掷次数

但标题说“从 2 到 1000000”,能够是指 p 和 q 是 2/1000000 和 999999/1000000 这样极端接近 0 或 1 的状况,考验算法效率(希冀投掷次数)。

解法:需求更复杂的配对和比拟,比如(投 A,投 B,比拟,假设相等重投,假设不等,再投一次 A 和 B 失掉第二对,比拟两对结果等)。

- 经典效果 2:已知两枚有偏硬币(概率 p 和 q 都未知,但知道 ( p eq q )),如何生成公允硬币?

解法:投两次,01 输入 0,10 输入 1,其他重投。

- 经典效果 1:已知一枚有偏硬币(概率 p 未知),如何生成公允硬币?

能够“进阶”在于:

5. 标题能够的“进阶”含义

那为什么标题给两枚硬币且概率不同?

这完全只用一枚有偏硬币 A(概率 p)就能生成公允硬币,不需求第二枚硬币 B!

3. 假设失掉 01,输入 0;假设失掉 10,输入 1。

2. 假设失掉 00 或 11,丢弃,重做。

留意 01 和 10 的概率相等(都是 ( p(1-p) ))。

能够结果:00(概率 ( (1-p)2 )),01(概率 ( p(1-p) )),10(概率 ( (1-p)p )),11(概率 ( p2 ))。

1. 投掷硬币 A 两次,观察结果。

其实甚至不需求知道 p,q 的详细值,只需知道它们不同,就可以用以下方法:

最规范的方法(“恣意有偏硬币到公允硬币”,已知 p,q 不同且已知值):

4. 更复杂的已知算法(实践可操作)

这样由于交流 (A,B) 角色对称,概率就是 1/2。

- 假设不相等,看某个固定规则(比如比拟字典序 (a,b) 和 (a',b'),若 (a,b) > (a',b') 则输入 1,否则输入 0)。

- 假设相等,丢弃全部,重做。

- 比拟 ( (a,b) ) 与 ( (a',b') ) 能否相等。

- 假设 ( a eq b ),则再投 A 得 ( a' ),再投 B 得 ( b' )。

- 假设 ( a=b ),丢弃,重做。

- 投 A 得 ( a ),投 B 得 ( b )。

已知的一个对称化技巧:

所以必需修正:我们需求一个对称化的进程。

—— 等等,这又回到刚才的不公允情形。

4. 假设 ( a_1=1, b_1=0 ),则输入 1;假设 ( a_1=0, b_1=1 ),则输入 0。

3. 假设 ( a_1 = b_1 ),回到步骤 1(相当于丢弃此次比拟)。

2. 投掷硬币 B,失掉 ( b_1 )。

1. 投掷硬币 A,失掉 ( a_1 )。

一种繁复的算法(1990 年由 M. S. Paterson 提到):

由于 ( p, q ) 是已知常数(假定已知数值),我们可以将 ( p, q ) 写成二进制小数,然后经过逐次比拟它们发生的随机位来生成公允比特。

已知的通用算法(不需求 ( p+q=1 ))是 应用“概率的有理数表示”与枚举。

3. 正确的已知通用算法

所以这个复杂方法不行。

公允需求 ( p(1-q) = (1-p)q ) ⇒ ( p - pq = q - pq ) ⇒ ( p = q ),矛盾。

]

P( ext{输入 1} mid ext{diff}) = frac{p(1-q)}{p(1-q) + (1-p)q}.

[

反省:

等一下——这和我一末尾说的经典方法一样,但刚才说它并不公允,除非 ( p+q=1 )。

3. 假设 ( a=1, b=0 ),输入 1;假设 ( a=0, b=1 ),输入 0。

2. 假设 ( a=b ),回到 1。

1. 投 A 一次,投 B 一次,得 ( a, b in {0,1} )。

更复杂的一个已知算法(1976 年由 Hoeffding, Simons 等提出):

但我们可以找到一个“字典序”或映射,使妥当两个序列不同时,A 的序列在某个顺序上等能够大于或小于 B 的序列,从而输入 1 的概率为 1/2。

两次投掷结果的结合散布,硬币 A 的四种能够 ( (00,01,10,11) ) 的概率与硬币 B 不同(由于单次概率不同)。

这样做的原理:

- 假设不相等,看 ( X_1 ) 是 1 还是 0,假设 ( X_1=1 ) 则输入 1,否则输入 0(或许用其他固定规则)。

- 假设相等,重试。

- 比拟 ( (X_1, X_2) ) 与 ( (Y_1, Y_2) ) 能否相等。

- 投掷硬币 B 两次,记载结果(( Y_1, Y_2 ))。

- 投掷硬币 A 两次,记载结果(比如 ( X_1, X_2 ))。

步骤:

设 ( p, q ) 已知且固定。

理想上,已知可以用恣意 ( p eq q ) 的两枚硬币模拟公允硬币,方法之一是 von Neumann 的推行:

2. 已知公允化方法

要让它等于 ( 1/2 ),需求 ( p(1-q) = (1-p)q ),即 ( p - pq = q - pq ),即 ( p = q ),但这里 ( p eq q ),所以经典方法并不是无条件公允,它只是应用“不同结果”时 A 正的概率与 ( p, q ) 有关,但通常不等于 1/2,除非 ( p+q=1 ) 时才公允。

]

= frac{p(1-q)}{p(1-q) + (1-p)q}.

P( ext{输入 1}) = P(A=1, B=0 mid ext{不同})

[

这样:

3. 假设结果不同,则取 A 硬币的结果作为输入(或许取 B 硬币的结果,但要固定一种定义)。

2. 假设结果相反(都正或都反),回到步骤 1(舍弃这次实验)。

1. 投 A 硬币(概率 ( p )),投 B 硬币(概率 ( q ))。

已知经典解法(Kahn 1985)是:

> 目的:用这两枚硬币模拟一个公允的 1/2 概率(等能够输入 0 或 1)。

> 你可以停止恣意次投掷(每次选一枚硬币投),依据结果调整战略。

> 你有两枚特殊的硬币,一枚正面概率 ( p ),另一枚正面概率 ( q )(( p eq q ) 且 ( 0

标签:

两枚硬币挑战全攻略:从基础2到百万进阶相关内容

  • 暂无内容

两枚硬币挑战全攻略:从基础2到百万进阶推荐新闻

热门词条

  • 足球

  • 篮球