朋友求助让我帮忙做一个击球胜率预测场次的小玩意,我大体说一下思路。 击球比赛一场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)//打印胜场
}
结果如下:
完整代码:
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)
一个简单的小玩意,感谢大家收看!