Python模拟树概率

2024-04-19 00:59:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我必须编写一个模拟函数,用前面扩展的play_pig函数运行游戏100000次。查看以绘制5美元账单结束的模拟百分比

在一年一度的交易会上,有一个游戏使用猪形状的存钱罐。小猪存钱罐里有一张5美元的钞票和三张1美元的钞票。在piggy bank#2中,有一张5美元的钞票和一张1美元的钞票。演奏 游戏中,你必须从小猪存钱罐1中取出一张账单,然后放入小猪存钱罐2。把小猪存钱罐#2的内容混合后,你可以拿一张钞票。从小猪存钱罐2得到5美元钞票的机会有多大

class Expr:
  pass

class Times(Expr) :
  def __int__(self,l,r) :
    slf.l = l
    self.r= r
  def _str_(self) :
    return "(" + str(self.l) + "*" + str(self.r) + ")"
  def eval(self,env) :
    retunr slef.l.eval(env)*self.r.eval(env)

class Plus(Expr) :
  def __int__(self,l,r) :
    slf.l = l
    self.r= r
  def __str_(self) : 
    return "(" + str(self.l) + "*" + str(self.r) + ")"
  
  def eval(self,env) :
    retunr slef.l.eval(env)*self.r.eval(env)


Class Const(expr) :
def __int__(self,val) :
  self.val = val

  def __str__(self) :
    return_str(self, val)

def eval(self,env) :

Class var (expr) :
pass

print(e1)
(3*(x,y))

我就是想不出使用python的正确方法


Tags: 函数selfenv游戏returndefevalval
1条回答
网友
1楼 · 发布于 2024-04-19 00:59:35

解析解

B1 = bill pulled from piggy bank 1
B2 = bill pulled from piggy bank 2
P(B2 = 5) is the probability of pulling a 5 from piggy bank 2

B1值的条件:

P(B2 = 5|B1 = 1) = 1/3
P(B2 = 5|B1 = 5) = 2/3

求解无条件概率:

P(B2 = 5) = P(B2 = 5|B1 = 1) * P(B1 = 1) + P(B2 = 5|B1 = 5) * P(B1 = 5)
P(B2 = 5) = (1/3) * (1/4) + (2/3) * (3/4) = 58.333%

从概念上讲,你可以把它看作一棵概率树。当你用分析的方法解决这个问题时,这真的很有帮助。但是,当您编写类似这样的代码时,它实际上并不是您想要做的事情,除非您试图编写分析性地解决问题的代码。您需要编写代码来复制情况,而不是编写代码来复制数学。然后,您对该情况运行N次,并观察概率

import random
import collections

piggy_bank_a = [5, 1, 1, 1]
piggy_bank_b = [5, 1]
outcomes = []
for experiment in range(100_000):
  bill_a = random.choice(piggy_bank_a)
  outcomes.append(random.choice(piggy_bank_b + [bill_a]))
totals = collections.Counter(outcomes)

我的总数如下所示:

Counter({1: 58273, 5: 41727})

相关问题 更多 >