/****
* 利用现有的 1--5的随机函数,加工出1 -7的随机函数
* 此函数只能用,不能修改
* 等概率返回1~5
*/
/**
* 构造一个等概率的1-5
*/
function oneTofive() {
return Math.floor((Math.random() * 5) + 1)
}
/**
* 等概率得到 0和1
*/
var ans01 = 0
function zeroToone() {
do {
ans01 = oneTofive()
} while (ans01 == 3)
return ans01 < 3 ? 0 : 1
}
/**
* 构造一个等概率的返回0--6的函数
*/
var ans6 = 0
function zeroTosix() {
do {
// 移位运算,可以得到0-7的等概率
ans6 = (zeroToone() << 2) + (zeroToone() << 1) + (zeroToone()<<0)
} while (ans6 == 7)//ans==7 排除等于7的可能,得到0-6的等概率事件
return ans6
}
/**
*
* l利用以上条件得到等概率1--7的函数
*/
function oneToseven() {
return (zeroTosix() + 1)
}