《编程之美》的概率题:一个桶里面有白球、黑球各100个,现在按下述规则取球

问题

题目:有一个桶,里面有白球、黑球各100个,人们必须按照以下的规则把球取出来:

1、每次从桶里面拿出来两个球;

2、如果是两个同色的球,就再放入一个黑球;

3、如果是两个异色的球,就再放入一个白球;

问:最后桶里面只剩下一个黑球的概率是多少?【100%】

思路一:用具体的方法来进行讨论

可以用一个set(黑球,白球)来表示桶中的黑球和白球的输入

根据规则,拿出两球放入一球,每次操作桶中的球都会少一个,所以数目应该是可控的。

定义相应的数学关系表示操作:

(-2,0)+(1,0) = (-1,0) 取出两个黑球,放入一个黑球,最后相当于取出一个黑球,依此类推

(0,-2)+(1,0)=(1,-2)

(-1,-1)+(0,1)=(-1,0)

从上述推断可以看出:

1 每次操作都会减少一球,所以最后剩下黑球或者白球

2 由于白球每次操作要么不变,要么成对减少,所以最后不可能剩余一个白球,那么必然是剩余黑球了

实践操作,可以以(2,2)做一次演示

第一次操作后的情况为(1,2)或者是(3,0)

对于(1,2)第二次操作后的情况为(2,0)或者(0,2)

对于(3,0),第二次操作后的情况为(2,0)

第三步操作无论哪种情况,随后都只能为(1,0)

思路二:用抽象的方法来解决

根据上述条件,可以用异或的方法来解决:

两个同色的球,放入一个黑球,所以让黑球为0,白球为1

对每次操作其实就是捞出两个数做一次异或操作,然后将所得的结果(1或者0)丢入桶中,这样操作的过程不会改变所有球权值的异或值

异或满足结合律或者交换律,所以取球的过程就是对所有的球进行异或,就是100个1和100个0的异或过程

因此,剩下一个球的时候,桶中的权值等于厨师时刻所有球权值的异或值,也就是0,所以剩下一个球一定是黑球

实践:

依然以(2,2)为例说明 所以黑球2个就代表2个数字0 白球2个代表有2个数字1

那么就是0 0 1 1

假设先取出2个白球 1 XOR 1 = 0 所以此时结果为0 0 0

取出2个黑球 结果就是0 XOR 0 = 0 所以此时结果为0 0

最后再取出两个黑球 异或结果是黑球

总结:分析复杂问题,最有效的方法就是通过简单的例子进行分析,然后根据归纳出的结论分析结果。适当的数学抽象在解决问题的过程中往往有华龙点金的作用

拓展问题:

1 如果桶中黑白球各为99个 结果如何?

根据前面的总结可知,只需要对所有数字进行异或,结果为1,所以最后剩一个白球

2 如果黑白数量不定?

其实不用在乎球的数量,只需要看最后异或运算的值即可

参考 hold_on2014 文章

    原文作者:wming3
    原文地址: https://blog.csdn.net/u010187139/article/details/79694888
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞