问题描述:
有一个01随机生成函数,rand(2),以p的概率生成1,1-p的概率生成0。请用这个生成函数设计一个等概率的01随机生成函数。
问题求解:
随机2次,可能的结果:00, 01, 10, 11。概率分别为:(1-p)*(1-p), (1-p)*p, p*(1-p), p*p
。可以发现01和10的生成概率相等。故让01代表0,10代表1,如果随机出了00或者11,就再随机2次。
拓展:
该类题的基本思路是通过多次随机构造答案所需要的等概率事件,该事件可能是生成结果的一个子集,在子集以外的结果,就重新来一次。