利用现有的 1--5的随机函数,加工出1 -7的随机函数 , 此函数只能用,不能修改 , 等概率返回1~5

/****
 * 利用现有的  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)
}


posted @ 2022-05-24 01:11  NaziriteGTC  阅读(35)  评论(2)    收藏  举报