【问题标题】:Creating a simulation of a bidding game on Geogebra在 Geogebra 上创建竞价游戏的模拟
【发布时间】:2017-05-14 20:57:28
【问题描述】:

爱丽丝、鲍勃和查理被选中参加经济学课程的拍卖。 每个人都提交 1、2 或 3 的秘密出价。出价最低且唯一*的人赢得拍卖并获得 1 美元的奖金。 *示例:如果 Alice 和 Bob 出价 1,而 Charlie 出价 2,则 Charlie 获胜。尽管 Alice 和 Bob 出价较低,但他们的出价不是唯一的,因此他们没有获胜。 (另外:如果他们都出同样的号码,没有人会赢)

我正在课堂上研究这个问题,我被要求创建一个模拟,在其中我为每个人选择他们玩 1、2 或 3 的概率(例如,我会让 Alice 玩 1 80% 的时间,以及 2 和 3 各 10% 的时间,Bob 会做其他事情,而 Charlie 会玩不同的概率)然后运行一堆模拟,看看哪个人赢得最多。我将如何创建这样的模拟?

【问题讨论】:

  • 是否有特定的语言或系统用于此作业?
  • 哎呀!我错过了对 GeoGebra 的引用...

标签: simulation


【解决方案1】:

解决方案应该相当简单。

首先,您需要知道如何为玩家出价。我们将使用一个数组来表示每个出价的概率,使得值的总和为1.0,并且每个出价者都有自己的数组。第一个数组元素是出价1的概率,第二个是出价2的概率,以此类推

下一步是将此概率数组转换为累积概率数组,用于计算出价小于或等于指定数字的概率。在这个新数组中,第一个数组元素是出价 1 的概率,第二个是出价 1 或 2 的概率,最后一个元素是出价 1、2 或 3 的概率(并且应该有值1.0) .虽然包含后一个值是多余的,但它会简化算法。

接下来我们需要进行多轮竞标。在每一轮中,我们需要为每个玩家随机确定一个出价。为此,我们在[0, 1) 范围内采样了一个均匀分布的伪随机数 (PRN)。幸运的是,大多数编程语言、系统等都提供了这种能力。然后,我们循环遍历累积概率数组,直到找到大于采样 PRN 的累积概率 - 出价就是相应的数组索引。

我们对每个投标人重复这一点。

接下来,我们会过滤掉非唯一的出价。然后,我们采用最低的剩余出价(如果有)并增加相关出价者的获胜次数。

然后重复此过程,直到我们获得每个玩家获胜率的稳定百分比。 (稳定,我的意思是新一轮的竞标应该不会显着影响每个竞标者的中标率。)

【讨论】:

  • 不是GeoGebra,而是我在GitHub上发布了一个Scala命令行程序执行此模拟。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-27
  • 2016-03-29
  • 2016-08-16
  • 2019-05-09
相关资源
最近更新 更多