假设只给你一个函数能生成【1,5】的随机函数,让你利用这个函数得出一个能等概率生成【1,7】的函数
- 思路
- 用初始函数得到等概率随机生成【0,1】的函数(生成1-2的返回0 4-5的返回1 生成3则重新roll)
- 在用这个函数生成 【0 - 6】的等概率函数, 把这个函数 roll三次结果相加,因为等到 000 - 111 做到等概率0~7等概率返回一个 ,(f2()<<2+ f2()<<1 + f2() <<0 ) ;f2()<<2 得到000 跟100的概率是一样的 即确定第一位。
- 在用【0,6】的函数结果加一即可得到等概率生成【1,7】的函数
问题2:
- 思路:roll两次,第一次跟第二次相比如果结果相同就不要,舍去再roll
- 原理:即 00 11的结果不要,只要01 10 则他们出现的概率就相等。