Dice & German Tank Problem

import numpy as np
import scipy as sp
import matplotlib.pyplot as plt
import seaborn as sns
import empiricaldist
from empiricaldist import Pmf, Distribution

Manual Way

dice = Pmf.from_seq([4,6,8,12])
dice
probs
4 0.25
6 0.25
8 0.25
12 0.25
dice[4] *= 0
dice[6] *= 1/6
dice[8] *= 1/8 
dice[12] *= 1/12

dice.normalize()
0.09374999999999999
dice
probs
4 0.000000
6 0.444444
8 0.333333
12 0.222222
def likelihood_dice(data, hypo):
    if data > hypo:
        return 0
    else:
        return 1 /hypo
    
    # Solution
    
# def likelihood_dice(data, hypo):
#     """Likelihood function for the dice problem.
    
#     data: outcome of the die roll
#     hypo: number of sides
    
#     returns: float probability
#     """
#     if data > hypo:
#         return 0
#     else:
#         return 1 / hypo
dice = Pmf.from_seq([4,6,8,12])
dice.update(likelihood_dice, 6)
dice
probs
4 0.000000
6 0.444444
8 0.333333
12 0.222222
for roll in [8,7,7,5, 4]:
    dice.update(likelihood_dice, roll)
dice
probs
4 0.000000
6 0.000000
8 0.919294
12 0.080706
dice.update??