java - 根据球队实力生成足球比分的好方法是什么?
问题描述
大约一年前,我尝试制作一个简单的基于文本的足球模拟程序,但我放弃了它,我想从头开始,因为它不是很好。我的问题是找到一个计算分数的好算法。
我不希望这个程序只是一个大的 Math.random() 混乱,而是使用 Math.random() 和团队实力的组合(每个团队的攻击和防御等级为 1-20,但是也可以改进,因为我不确定这是否是最佳的方法)以计算分数,并且可能将主场优势和形式/士气融入其中(但这会稍后,因为它稍微复杂一些) .
在我之前的程序中,算法比较了 2 支球队的攻击和防御等级,然后决定随机化多少个进球。例如,如果一支球队的进攻等级最高为 20,而与一支防守等级为 5 的球队交手,他们很可能会进几个球。这个算法的一些问题是:
- 我认为使用这种算法很难将主场优势和形式结合起来。有很多 if 和 else 有一个 1 到 100 之间的随机整数来获得不同的机会百分比。
- 尽管我让较小的球队有机会进几个球,但并没有太多令人惊讶的结果。
- 比分是疯狂的,球队每周都以 5-1 的比分获胜。
- 它并没有从技术上检查一支球队整体上是否更好,只是根据进攻与防守来决定球队的进球数。所以从理论上讲,攻击可能会被压倒(不过我可能错了)。
- 假设一支必须赢得联赛冠军的球队正在与一支已经获得中游成绩的球队比赛:这不会对比赛产生影响。我想这是要在表单旁边添加的内容,但我不知道。
考虑到这些点,你有一个更好的算法的好主意吗?我不知道机器学习和所有这些东西,我希望这个程序有点简单。当然,我也不需要你为我写整个算法,给我一些大致的想法。非常感谢 :)
解决方案
我的建议(只是大声思考,我对足球比分模拟完全没有经验)。
我会为每支球队分配一个相对的“目标潜力”,意思是“该球队平均会进多少球”(针对整个球队)。然后模拟将基于正态分布,其平均值等于两名球员的进球潜力之差,以及一些标准偏差。
要了解适当的值,您可以获取几支球队的历史数据并计算他们的平均进球数(每场比赛)和全球标准偏差。
您可以通过为团队分配不同的标准偏差来改进模型,这将反映他们的“规律性”。同样,您可以根据实际数据计算这些值以了解实际值(并检查使用不同的值是否有意义)。
主场优势可以建模为目标潜力的固定增量。您还可以通过计算给定球队每场比赛的两个平均进球数来衡量实际的主场优势,无论是在主场还是客队时,然后计算差异(这是一种查看主场优势是真实的还是只是民间传说的方法)。
推荐阅读
- octopus-deploy - Octopus 部署 JSON 变量替换未按预期工作
- c# - C# 上 CryptoJS.enc.Base64.parse 的等价物
- javascript - Axios Vue.js 表未反映响应数据
- reactjs - 如何在里面使用标签
- c# - 如何使用 Visual Studio 调试调用 C++ dll 的 C# 程序?
- angular - Google App Engine Angular + Express 在刷新时总是 404
- shiny - Shiny downloadHandler 两种图片格式下载错误
- python - 我已经安装了 webdriver_manager 但是python找不到模块
- javascript - 使用 Underscore.js 提取包含特定字符串的特定对象
- openapi - Open API 3.0 规范是否支持变更日志?