模拟每个玩家获胜概率不同的游戏?

时间:2015-06-23 22:59:12

标签: c++ algorithm math statistics simulation

说我有4名球员:

java.lang.ExceptionInInitializerError...
Caused by: java.lang.UnsatisfiedLinkError: Couldn't load serial_port.so from loader dalvik.system.PathClassLoader[dexPath=/data/app/com.example.blake.serialport2-1.apk,libraryPath=/data/app-lib/com.example.blake.serialport2-1]: findLibrary returned null 

我需要一种方法来模拟不同的玩家一起玩并随机选择一个胜利者,但这样才能让胜利者有意义。

我的第一个想法是这样做:

如果我的随机数落在1到50之间,则玩家1获胜,如果我的随机数落在51和101之间,则玩家2获胜,如果它落在102和192之间,则玩家3获胜,如果它落在193和之间203,玩家4获胜。

我选择1到203之间的数字来确定获胜者。假设我的随机数是均匀分布的,我应该得到我想要的东西。

我想知道是否有更多数学方法可以做到这一点,或者这是否是唯一的方法? (利用语言c ++)

1 个答案:

答案 0 :(得分:3)

我会将此评论更改为答案,因为我还有更多:

我喜欢ELO评级。许多年前,哈克尼斯写了一本书,描述了美国国际象棋联合会如何通过扩展基本的ELO系统来实现其评级。另外,当新玩家建立他的评级时,前25场比赛基于严格的ELO系统。 (希望我可以提供参考,但是我的工作电脑不会让我导航到任何涉及游戏的网站。)

了解它的数字和算法很简单'根据胜率确定评级。获得评级后,您可以根据评分差异计算获胜的头对头概率。

一旦你接近概率,然后将每个球员的胜率与他的三个对手相加,并宣布获胜者的总得分最高。如果您想要赢得Round Robin的人的特定概率,您可以使用基本统计分析来计算各个游戏差异总和的胜率百分比。