问题:有一个函数fun能返回0和1两个值,返回0和1的概率都是1/2,问怎么利用这个函数得到另一个函数fun2,使fun2也只能返回0和1,且返回0的概率为0.3,返回1的概率为0.7。
随机生成长度为4的01串,
0000~1111每个串出现的概率都为1/16
如果生成的串为0000 0001 0010之一,则返回0
如果生成的串为0011 0100 0101 0110 0111 1000 1001则返回1(共七个串)
否则,递归,重新来过。
其实就是生成一个09的数(大于9的全部抛弃),然后如果是02就返回0,其它的就返回1。
这题也可以有别的思路,例如生成一个32位的整数,然后于模10取余数,如果余数是0~2返回0,其它返回1。