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

Simulating a game where each player has a different probability of winning?

本文关键字:游戏 概率 获胜 玩家 模拟      更新时间:2023-10-16

假设我有4个玩家:

Player 1 wins 50% of his games
Player 2 wins 20% of his games
Player 3 wins 90% of his games
Player 4 wins 20% of his games

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

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

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

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

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

我会把这个评论改成一个答案,因为我有更多:

我喜欢ELO评分。哈克内斯多年前写了一本书,描述了美国国际象棋联合会如何通过扩展基本ELO系统来实现其评级。顺便说一句,当一个新玩家将建立他的评级时,前25场比赛是基于严格的ELO系统。(希望我能提供一个参考,但我的工作电脑不允许我浏览任何与游戏有关的网站)。

进入数字和算法,很容易根据获胜百分比生成评分。一旦你有了评分,你就可以根据评分的差异来计算获胜的概率。

一旦你有了概率,然后把每个玩家战胜三个对手的概率加起来,宣布最高的总概率为赢家。如果你想知道一个人赢得循环赛的具体概率,你可以使用初等统计分析来计算个人比赛方差之和的获胜百分比的方差。