一个简单的击球胜场预测

64 阅读2分钟

朋友求助让我帮忙做一个击球胜率预测场次的小玩意,我大体说一下思路。 击球比赛一场15分,先拿15分的赢,比赛15次,A的能力是0.6,B的能力是0.5,当天手感使用随机数来做。

var proA = 0.6; //A的能力
var proB = 0.5;//B的能力
var n = 15;//总场次

先做一场比赛的比分情况:

//单局游戏得分判定
function singleGame(proA, proB) {
    var scoreA = 0;//A单场得分
    var scoreB = 0;//B单场得分
    var first = "A";//先发球的是A
    
    
    if (gameOver(scoreA, scoreB) !== 1) {
        for (var i = 0; i < 15; i++) {
            var status = Math.random();
            if (first === "A") {
                if (status < proA) {//发球能力在A之内,可以赢分
                    scoreA++;
                } else {
                    first = "B"
                    scoreB++;
                }
            } else {
                if (status < proB) {//发球能力在B之内,可以赢分
                    scoreB++;
                } else {
                    first = "A"
                    scoreA++
                }
            }
        }
    }
    return [scoreA, scoreB];//返回一局的得分情况
}

运行运行 当然要有判停依据,判定比赛结束

//游戏结束判定
function gameOver(scoreA, scoreB) {
    if (scoreA === 15 || scoreB === 15) {
        console.log("game over")
        return 1//代表比赛结束
    } else {
        return 0//比赛未完成,这里做标识用
    }
}

全局比赛情况:

//全部游戏胜负判定
function allGame(n, proA, proB) {
    var winA = 0;
    var winB = 0;
    for (var i = 0; i < n; i++) {
        var scoreA = parseInt(singleGame(proA,proB)[0]); //获得A每一局的比赛分数
        var scoreB = parseInt(singleGame(proA,proB)[1]);//获取B每一局的比赛分数
        if(scoreA>scoreB){
            winA++;
        }else{
            winB++
        }
    }
    console.log("A的胜场:"+winA,"B的胜场"+ winB)//打印胜场
}

结果如下:

image.png

完整代码:

var proA = 0.6; //A的能力
var proB = 0.5;//B的能力
var n = 15;//总场次

//单局游戏得分判定
function singleGame(proA, proB) {
    var scoreA = 0;
    var scoreB = 0;
    var first = "A";//先发球的是A
    
    
    if (gameOver(scoreA, scoreB) !== 1) {
        for (var i = 0; i < 15; i++) {
            var status = Math.random();
            if (first === "A") {
                if (status < proA) {//发球能力在A之内,可以赢分
                    scoreA++;
                } else {
                    first = "B"
                    scoreB++;
                }
            } else {
                if (status < proB) {//发球能力在A之内,可以赢分
                    scoreB++;
                } else {
                    first = "A"
                    scoreA++
                }
            }
        }
    }
    return [scoreA, scoreB];
}
//全部游戏胜负判定
function allGame(n, proA, proB) {
    var winA = 0;
    var winB = 0;
    for (var i = 0; i < n; i++) {
        var scoreA = parseInt(singleGame(proA,proB)[0]); 
        var scoreB = parseInt(singleGame(proA,proB)[1]);
        if(scoreA>scoreB){
            winA++;
        }else{
            winB++
        }
    }
    console.log("A的胜场:"+winA,"B的胜场"+ winB)
}

//游戏结束判定
function gameOver(scoreA, scoreB) {
    if (scoreA === 15 || scoreB === 15) {
        console.log("game over")
        return 1
    } else {
        return 0
    }
}

allGame(n, proA, proB)

一个简单的小玩意,感谢大家收看!