首页 > 解决方案 > 如何使用 python 使这个骰子游戏在模拟中运行 10,000 次?

问题描述

我正在做家庭作业。我似乎找不到关于如何使骰子滚动 10,000 次以及创建一个变量的解决方案,该变量在您正确掷骰子时每次赢得一些钱时都会更新。我对下面的作业有一些说明,任何人都可以对我有所了解吗?

游戏玩法如下:掷一个六面骰子。如果您掷出 1、2 或 3,则游戏结束。如果您掷出 4、5 或 6,您将赢得那么多美元(4 美元、5 美元或 6 美元),然后再掷一次。每多掷一次,您就有机会赢得更多的钱,或者您可能会掷出游戏结束的 1、2 或 3,此时游戏结束,您可以保留所累积的任何奖金。

使用 Python 的 Random 模块中的 randint 函数来获得掷骰结果(请参阅整数函数)。

运行 10,000 次游戏模拟(蒙特卡洛方法)。打印赢得的平均金额和赢得的最大金额。

就像一个思想实验一样,你愿意花 3 美元买一个玩这个游戏的机会吗?

示例输出:

平均中奖金额 = x.xx 最大中奖金额 = xx

import random

class diceGame:

    def __init__(self,dice):
        self.dice = dice

    def gameOutCome(self):

            askUser = str(input("Roll to play the game? Y/N: "))
            while True:
                if askUser == 'y':
                    print(self.dice)
                    if self.dice == 1:
                        print("Sorry, Try Again!")
                    elif self.dice == 2:
                        print("Sorry, Try Again!")
                    elif self.dice == 3:
                        print("Sorry, Try Again!")
                    elif self.dice == 4:
                        print("You win $4")
                    elif self.dice == 5:
                        print("You win $5")
                    elif self.dice == 6:
                        print("You win $6")

                askUser = str(input("Roll to play the game? Y/N: "))









x = random.randint(1,6)
dd = diceGame(x)
dd.gameOutCome()

标签: python

解决方案


欢迎来到stackoverflow。由于这是您的作业,因此我认为在此处发布完整的解决方案不合适。

但是,我确实认为正确方向的一些指示可能会有所帮助:

1)您正在运行模拟 10000 次。每卷需要 2 个用户输入。因此,为了完成模拟,您至少需要 20000 个用户输入...是的,这会很烦人 ;) .... 所以让我们减少用户输入 - 只需编写一个执行游戏的函数,直到游戏完成。一旦你有一个执行一个游戏的函数,你怎么能执行多次呢?

2) 想想每一轮都有两种可能的结果——是否继续游戏。继续意味着什么?游戏结束需要满足什么条件?

3) 游戏结束后,你需要用钱做什么?

4)您可以使用 sum 和 max 函数来计算平均和最大获胜。

import random

def play_game():
    #The function that executes the game - you have to write that on your own
    pass

wins = [play_game() for i in range(0,10000)]
win_average = sum(wins)/10000.0
max_win = max(wins)

推荐阅读