首页 > 解决方案 > 调整基本足球模拟算法

问题描述

我需要帮助来调整我非常基本的足球比赛模拟算法。除了团队评分(团队球员的综合评分)之外,它不需要考虑任何其他内容。我想出了一些东西,但结果不是很有趣: 图片 ,即它们几乎总是以(零)-(某物)结束

这是算法

 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
            }

        }

这很简单,我只是生成一个随机数,然后看看我得到的数字是否小于考虑团队评分差异的基本机会。我对第二队重复这一点。循环可以在第一次迭代时退出,但并非必须如此。如果没有,我会增加我的控制变量,以便它有更高的机会在下一次迭代中退出。

我不是特别擅长统计和数学,但即使以正确的方式指导我,我也非常感激。

标签: javaalgorithmprobability

解决方案


对于足球比赛,0 并不少见,我看不出有什么问题。但这里有另一种观点: 1> 确定总目标,可以泊松分布。2> 对于每一个进球,确定哪支球队进球,哪支球队可以使用标准化的球队实力:A/(A+B) vs B/(A+B)。我会建议一些更有利于更强大团队的东西,这似乎是更真实的结果。


推荐阅读