python - 如何使用 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()
解决方案
欢迎来到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)
推荐阅读
- sequelize.js - 在sequelize上执行sql查询
- javascript - Mobx 和 React 异步函数调用会冻结 UI,而 onClick 调用不会
- c++ - 使用内核驱动程序c ++写入只读地址
- c# - StringBuilder AppendLine 方法未将换行符添加到 HTML 输出
- c++ - c++ 中的 unordered_set 中是否存在任何顺序?
- amazon-redshift - 需要在 LAG 函数中包含偏移值作为 expr
- javascript - 有没有办法使用 highcharts 更改系列显示值
- sql - 在给定开放和关闭日期的情况下,随时间生成开放票的计数
- c++ - Boost::asio 到 Struct(如 recv)
- python - 如何使用 Python 删除 JavaScript 和其他标签...而不导入模块