Skip to content
Extraits de code Groupes Projets
exam_simul.py 1,69 ko
Newer Older
  • Learn to ignore specific revisions
  • from histogram import Histogram
    
    
    def simul_one_year(source, n_students):
        new_hist = Histogram(21,-0.5,20.5)
        new_hist.fill_random(source,n_students)
        return new_hist
    
    
    def get_success_rate(histogram):
        return histogram.get_integral(9,20)*1./histogram.get_integral()
    
    results_career = Histogram()
    results_career.load("results_career.csv")
    
    results_one_year = Histogram()
    results_one_year.load("results_one_year.csv")
    
    
    # First question :
    one_year_av = results_one_year.get_average()
    one_year_sr = get_success_rate(results_one_year)
    
    n_worse_av = 0
    n_worse_sr = 0
    n_tries = 5000
    for i in range(n_tries):
        ss = simul_one_year(results_career,30)
        av = ss.get_average()
        sr = get_success_rate(ss)
    
        if av < one_year_av:
            n_worse_av +=1
        if sr < one_year_sr:
            n_worse_sr +=1
    
    print("Worse average in {} % of simulations.".format(100*n_worse_av*1./n_tries))
    print("Worse success rate in {} % of simulations.".format(100*n_worse_sr*1./n_tries))
    
    
    
    # Second question :
    
    n_worse_career_av = 0
    n_worse_career_sr = 0
    n_tries = 1000
    for test in range(n_tries):
        career_worse_av = 20
        career_worse_sr = 1
        for year in range(30):
            ss = simul_one_year(results_career,30)
            av = ss.get_average()
            sr = get_success_rate(ss)
            if av < career_worse_av:
                career_worse_av = av
            if sr < career_worse_sr:
                career_worse_sr = sr
    
        if career_worse_av < one_year_av:
            n_worse_career_av += 1
    
        if career_worse_sr < one_year_sr:
            n_worse_career_sr += 1
    
    
    print("Worse average in {} % of careers.".format(100*n_worse_career_av*1./n_tries))
    print("Worse success rate in {} % of careers.".format(100*n_worse_career_sr*1./n_tries))