已知随机函数old_rand(),以p的概率产生0,以1-p的概率产生1,
//现在要求设计一个新的随机函数newRand(),使其以等概率生成1和0
我当时用的是求异或,对此之后概率值最终会收敛到0.5,0.5。
正确答案是:http://www.51projob.com/a/souhu/20120911/651.html
- int old_rand()
- {
- return rand()%2;
- }
- int new_rand()
- {
- int first_bit = old_rand();
- int second_bit = old_rand();
- if (first_bit == 1 && second_bit == 0)
- return 1;
- elseif (first_bit == 0 && second_bit == 1)
- return 0;
- else
- return new_rand();
- }