# Scientific Computing with Python Projects - Probability Calculator

### Tell us what’s happening:

Hello, my last test is not passing, even though I get a roughly estimate of the probability when running from same parameters three times. Can I please be assistant because with each experiement I reset my hat contents for consistancy what could I be doing wrong the draw again the expected balls as per param, that part seems to fine to me logically. I also refresh the hat.contents or update it with the copied content (hat_copy) at the end of the for loop. the what could I be doing wrong?

### My code thus far!

``````import copy
import random

class Hat:
def __init__(self, **kwargs):
self.contents = []
for color, count in kwargs.items():
self.contents.extend([color]*count)

def draw(self, num_balls_drawn):
sel_ball = ''
drawn_balls = []
for num_ball in range(num_balls_drawn):
sel_ball = random.randrange(len(self.contents))
drawn_balls.append(self.contents[sel_ball])
self.contents.remove(self.contents[sel_ball])
return drawn_balls

def experiment(hat, expected_balls, num_balls_drawn, num_experiments):
hat_copy = copy.deepcopy(hat.contents)
M = 0
N = num_experiments
for _ in range(N):
# print(len(hat.contents))
draw = hat.draw(num_balls_drawn)
# print(len(hat.contents))
success = True
for color, count in expected_balls.items():
if draw.count(color) < count:
success = False
break

if success:
M += 1
hat.contents = copy.deepcopy(hat_copy)
draw.clear()
return M/N

hat = Hat(black=6, red=4, green=3)

probability1 = experiment(hat=hat,
expected_balls={"red":2,"green":1},
num_balls_drawn=5,
num_experiments=2000)

probability2 = experiment(hat=hat,
expected_balls={"red":2,"green":1},
num_balls_drawn=5,
num_experiments=2000)

probability3 = experiment(hat=hat,
expected_balls={"red":2,"green":1},
num_balls_drawn=5,
num_experiments=2000)

print(probability1,probability2, probability3)
``````

The results obtained on the picture.

User Agent is: `Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36`