Tell us what’s happening:
Hello! I’m working on the Probability Calculator Challenge for Scientific Computing with Python and I’m having trouble with the test_prob_experiment test function.
I’ve read something about using the copy method and use a copy of the hat for the experiment function in other posts, but I really don’t understand why I have to do that. Can someone explain that to me? Although I don’t know if that’s the only problem that makes my code fail. I would appreciate some help!
Your code so far
import copy
import random
from collections import Counter
class Hat:
def __init__(self, **kwargs):
self.contents = []
for k in kwargs.keys():
for v in range(0,kwargs.get(k)):
self.contents.append(str(k))
def draw(self,amount):
pulled_balls = []
if amount > len(self.contents):
self.contents.extend(pulled_balls)
#print("The number of balls to draw exceeds the available quantity, returning all the balls")
else:
for i in range(0,amount):
contentslength = len(self.contents)
randomnumber = random.randint(0,contentslength -1) #-1 to preven out of range
pulled_balls.append(self.contents[randomnumber])
self.contents.remove(self.contents[randomnumber])
return pulled_balls
def experiment(hat,expected_balls,num_balls_drawn,num_experiments):
M = 0 #how many times we get expected
N = 0 #amount of experiments performed
experiments = num_experiments
for e in range(experiments):
taken_balls = hat.draw(num_balls_drawn)
extracted = Counter(taken_balls) #convert to dict format
contains_all = True
#if Extracted contains Expected, M += 1
for k,v in expected_balls.items():
if k in extracted.keys() and extracted.get(k) >= expected_balls.get(k):
contains_all = True
else:
contains_all = False
if contains_all == True:
M += 1
N += 1
probability = M/N
return probability
#print("Probability: ",probability)
#hat = Hat(blue=3,red=2,green=6)
#experiment(hat=hat, expected_balls={"blue":2,"green":1}, num_balls_drawn=4, num_experiments=1000)
#expected probability 0.272
The console
The repl.it
Link
Your browser information:
User Agent is: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.190 Safari/537.36
.
Challenge: Probability Calculator
Link to the challenge: