使用typescript:甲乙两人比较大小获得胜利类型winType(甲赢,乙赢,平局),甲胜利概率60%,乙胜利概率40%;根据胜利类型,乙先抽取牌组,甲根据乙抽取的牌组和胜利类型随机牌组, 牌组数据为卡牌数据 cardCompareArr = { "0" : [ 11,12,14], "1" : [ 11,13,15], "2" : [ 13,14,16], "3" : [ 14,14,15], "4" : [ 15,15,15], "5" : [ 16,16,16] }
时间: 2024-03-09 15:47:36 浏览: 18
好的,根据您的描述,我可以给出以下 TypeScript 代码,实现上述功能:
```typescript
type WinType = '甲赢' | '乙赢' | '平局';
const cardCompareArr = {
"0" : [ 11,12,14],
"1" : [ 11,13,15],
"2" : [ 13,14,16],
"3" : [ 14,14,15],
"4" : [ 15,15,15],
"5" : [ 16,16,16]
};
function getRandomCardGroup(): number[] {
const keys = Object.keys(cardCompareArr);
const randomKey = keys[Math.floor(Math.random() * keys.length)];
return cardCompareArr[randomKey];
}
function getWinType(): WinType {
const rand = Math.random();
if (rand < 0.6) {
return '甲赢';
} else if (rand < 1) {
return '乙赢';
} else {
return '平局';
}
}
function getRandomCardGroupFor甲(winType: WinType): number[] {
// 甲和乙都是随机抽取牌组,因此甲抽取的牌组也要随机
return getRandomCardGroup();
}
function getRandomCardGroupFor乙(winType: WinType): number[] {
return getRandomCardGroup();
}
// 定义甲和乙的胜利次数
let winsFor甲 = 0;
let winsFor乙 = 0;
let ties = 0;
// 模拟比赛
for (let i = 0; i < 10000; i++) {
// 乙先抽取牌组和胜利类型
const winType = getWinType();
const cardGroupFor乙 = getRandomCardGroupFor乙(winType);
// 甲根据乙抽取的牌组和胜利类型随机牌组
const cardGroupFor甲 = getRandomCardGroupFor甲(winType);
// 比较牌组大小,计算胜负
const sumFor甲 = cardGroupFor甲.reduce((sum, val) => sum + val, 0);
const sumFor乙 = cardGroupFor乙.reduce((sum, val) => sum + val, 0);
if (sumFor甲 > sumFor乙) {
winsFor甲++;
} else if (sumFor甲 < sumFor乙) {
winsFor乙++;
} else {
ties++;
}
}
console.log(`甲胜利次数:${winsFor甲}`);
console.log(`乙胜利次数:${winsFor乙}`);
console.log(`平局次数:${ties}`);
console.log(`甲胜率:${winsFor甲 / 10000}`);
console.log(`乙胜率:${winsFor乙 / 10000}`);
console.log(`平局率:${ties / 10000}`);
```
这段代码会进行 10000 次比赛,打印出甲和乙的胜利次数、平局次数和胜率。您可以根据需要修改比赛次数和牌组数据。