page contents

如何求拿到最多金币的概率?

轩辕小不懂 发布于 2022-03-29 15:55
阅读 798
收藏 0
分类:人工智能

10个房间里放着数量随机的金币。每个房间只能进入一次,并只能在一个房间中拿金币。一个人采取如下策略:前4个房间只看不拿。随后的房间只要看到比前4个房间都多的金币数,就拿。否则就拿最后一个房间的金币。编程计算这种策略拿到最多金币的概率。

3392
Nen
Nen
- 程序员

这道题的要求是一个概率的问题,由于10个房间里放的金币的数量是随机的,因此,在编程实现的时候首先需要生成10个随机数来模拟10个房间里金币的数量。然后判断通过这种策略是否能拿到最多的金币。如果仅仅通过一次模拟来求拿到最多金币的概率显然是不准确的,那么就需要进行多次模拟,通过记录模拟的次数m,拿到最多金币的次数n,从而可以计算出拿到最多金币的概率n/m。显然这个概率与金币的数量以及模拟的次数有关系。模拟的次数越多越能接近真实值。下面以金币数为1~10的随机数,模拟次数为1000次为例给出实现代码:

attachments-2022-03-pN9KTfJt6242c5004d11d.png程序的运行结果为:

0.421

运行结果分析:运行结果与金币个数的选择以及模拟的次数都有关系,而且由于是个随机问题,因此同样的程序每次的运行结果也会不同。

请先 登录 后评论