爱丽丝、鲍勃和查莉被选中参加一堂经济学课的拍卖。每个人都提交一个秘密出价1、2或3。出价最低且唯一*的人赢得拍卖,并获得1美元的奖金。*示例:如果Alice和Bob出价1,查利出价2,那么查利就赢了。尽管爱丽丝和鲍勃的出价较低,但他们的出价并不独特,因此他们没有获胜。(另外:如果他们都出价相同的号码,则没有人中标)
我正在课堂上研究这个问题,我被要求为每个人创建一个模拟,让我为每个人选择他们将玩1,2或3的概率(例如,我将Alice设置为180%的时间,2和310%的时间,Bob会做其他的事情,Charlie会用不同的概率玩),然后运行一系列的模拟,看看哪个人赢得最多。我如何创建这样的模拟?
发布于 2017-05-18 23:58:16
解决方案应该相当简单。
首先,你需要知道如何为一个球员出价。我们将使用一个数组来表示每个出价的概率,这样值的总和就是1.0,并且每个出价人都有自己的数组。第一个数组元素是竞价概率1,第二个数组元素是竞价概率2,依此类推。
下一步是将此概率数组转换为累积概率数组,用于计算投标值小于或等于指定数字的概率。在这个新数组中,第一个数组元素是竞价1的概率,第二个是竞价1或2的概率,最后一个元素是竞价1、2或3的概率(并且应该具有值1.0)。尽管包含后一个值是多余的,但它将简化算法。
接下来,我们需要多轮竞标。在每一轮中,我们需要为每个玩家随机确定一个投标值。为此,我们在[0, 1)范围内采样一个均匀分布的伪随机数(PRN)。幸运的是,大多数编程语言、系统等都提供了这样的功能。然后,我们循环遍历累积概率数组,直到找到大于采样PRN的累积概率-那么bid就是相应的数组索引。
我们为每个投标人重复这一点。
接下来,我们过滤掉非唯一的出价。然后,我们采用剩余的最低出价(如果有),并增加相关投标人的中标数量。
然后重复这个过程,直到我们得到每个玩家的胜率的稳定百分比。(说到稳定,我的意思是,每一轮新的竞标都不应该对每个竞标者的中标率产生重大影响。)
https://stackoverflow.com/questions/43968718
复制相似问题