java - 调整基本足球模拟算法
问题描述
我需要帮助来调整我非常基本的足球比赛模拟算法。除了团队评分(团队球员的综合评分)之外,它不需要考虑任何其他内容。我想出了一些东西,但结果不是很有趣: 图片 ,即它们几乎总是以(零)-(某物)结束
这是算法
double flagIncrementer = 0.10;
while(!flag){
if(new Random().nextDouble() <= baseChance - (homeTeamRating - awayTeamRating)){
teamAwayScore++;
boolean scoredFlag = false;
while(!scoredFlag){
for(Player player : away.getPlayerList()){
if(new Random().nextDouble() <= player.getProbabilityWeight()){
awayScorers.add(player);
scoredFlag = true;
break;
}
}
}
}
if(new Random().nextDouble() <= baseChance - (awayTeamRating - homeTeamRating)){
teamHomeScore++;
boolean scoredFlag = false;
while(!scoredFlag){
for(Player player : home.getPlayerList()){
if(new Random().nextDouble() <= player.getProbabilityWeight()){
homeScorers.add(player);
scoredFlag = true;
break;
}
}
}
}
if (new Random().nextDouble() <= flagIncrementer) {
flag = true;
} else {
flagIncrementer += 0.10; //inkrementiraj kako bi se izbjegla beskonačna petlja
}
}
这很简单,我只是生成一个随机数,然后看看我得到的数字是否小于考虑团队评分差异的基本机会。我对第二队重复这一点。循环可以在第一次迭代时退出,但并非必须如此。如果没有,我会增加我的控制变量,以便它有更高的机会在下一次迭代中退出。
我不是特别擅长统计和数学,但即使以正确的方式指导我,我也非常感激。
解决方案
对于足球比赛,0 并不少见,我看不出有什么问题。但这里有另一种观点: 1> 确定总目标,可以泊松分布。2> 对于每一个进球,确定哪支球队进球,哪支球队可以使用标准化的球队实力:A/(A+B) vs B/(A+B)。我会建议一些更有利于更强大团队的东西,这似乎是更真实的结果。
推荐阅读
- javascript - 即使在冒泡阶段,Mousedown 事件也会改变子元素的颜色
- python - 日志模块无法加载好的配置
- azure - 用于 blobstorage 帐户的操作 Azure CDN 配置
- c++ - 使用工厂函数创建 std::shared_ptr
- python - 如何在每个带有类名的标签之后插入新元素?
- python - 将图像保存到 csv 文件,然后从 csv 文件中读取
- snowflake-schema - 我需要查找上个月开票金额大于 0 且当月未开票的用户数
- go - 如何拉伸条目小部件
- c# - 如何使用 C# 实现重试模式?
- ruby-on-rails - ActiveStorage 中的文件可以在没有父(模型)ID 的情况下上传吗?