P1.关于从桶中取出黑白球的问题(转载)

本文通过两种方法解答了一个经典的黑白球概率问题:在一个桶里有等量的白球和黑球,每次取出两个球并根据规则放回一个球,探讨最终桶中剩余一个黑球的概率。同时扩展讨论不同初始条件下的结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

《编程之美》黑白球的问题

问题:

有一个桶,里面有白球和黑球各100个,规则如下:

  1. 每次随机从桶中取出两个球
  2. 如果是两个同色的球,就再放入一个黑球
  3. 如果是两个异色的球,就再放入一个白球

问:最后桶中只剩下一个黑球的概率是多少?

 

解法一:

我们可一个用一个项量 (a,b)=(黑球数量,白球数量)来表示桶中的黑球和白球的个数。从桶中取出球后,只可能是下列三种操作:

  1. 取出的是两个黑球,则放回一个黑球:(-2, 0) + (1, 0) = (-1, 0)
  1. 取出的是两个白球,则放回一个黑球:(0, -2) + (1, 0) = (1, -2)
  2. 取出的是一黑一白,则放回一个白球:(-1, -1) + (0, 1) = (-1, 0)

根据上面的规则,我们可以发现:白球的数量变化情况只能是不变或者-2,也就是说,如果是100个白球,白球永远不可能是1个(单数)的情况,那么问题的解法就很简单了,就是只剩下黑球的概率为100%

 

解法二:

两个相同的球异或等于0,两个不同的球异或等于1

将黑球赋为0 白球赋为1.

可以作这样的抽象:每次捞出两个数字做一次异或操作,并将所得的结果丢回桶中。

就有可能是0 xor 1 xor 1 ……之类的情况,又因为异或满足结合律,上式可变为:

(0 xor 0 ……xor 0) xor (1 xor 1 ……xor 1),由于1和0都为偶数,两边都是100个,结果就是0,所以只能是黑球

 如果0 和 1都为奇数个,则结果为1



扩展问题:

1.如果桶中的球分别为99个,那么结果会怎样?

根据异或的结果 最后的球一定是白球

2.如果黑白球的数量不定,结果又会怎样?

a个白球 b个黑球

a为奇数时异或为1,a为偶数时异或为1

b无论奇偶都是0

所以当白球为奇数时,最后一定取出白球,白球为偶数时,最后一定取出黑球



总结公式

(0 xor 0 ……xor 0)(奇数) xor (1 xor 1 ……xor 1)(不管奇偶数) = 0 xor 1 = 0

(0 xor 0 ……xor 0)(偶数) xor (1 xor 1 ……xor 1)(不管奇偶数) = 1 xor 1 = 1



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值