ÎncepețiÎncepe gratuit

Simularea zarurilor pereche

Asemănător exemplului din lecție, vei arunca două zaruri din două pungi, fiecare pungă conținând trei zaruri trucate.

bag1 = [[1, 2, 3, 6, 6, 6], [1, 2, 3, 4, 4, 6], [1, 2, 3, 3, 3, 5]]
bag2 = [[2, 2, 3, 4, 5, 6], [3, 3, 3, 4, 4, 5], [1, 1, 2, 4, 5, 5]]

Diferența constă în faptul că zarurile din cele două pungi sunt asociate în perechi: dacă alegi al doilea zar din bag1, vei alege și al doilea zar din bag2. În fiecare trial:

  • Alegi aleatoriu o pereche de zaruri din cele două pungi și le arunci
  • Succesul apare dacă suma punctelor de pe dice1 și dice2 este opt; altfel, eșec

Sarcina ta este să completezi bucla for din funcția roll_paired_biased_dice() și să folosești această funcție pentru a calcula probabilitățile de succes pentru fiecare combinație unică de puncte de pe dice1 și dice2.

Au fost importate deja pentru tine: random, numpy ca np, pandas ca pd, seaborn ca sns și matplotlib.pyplot ca plt.

Acest exercițiu face parte din cursul

Simulări Monte Carlo în Python

Vezi cursul

Exercițiu interactiv practic

Încearcă acest exercițiu completând acest cod de exemplu.

def roll_paired_biased_dice(n, seed=1231):
    random.seed(seed)
    results={}
    for i in range(n):
        bag_index = random.randint(0, 1)
        # Obtain the dice indices
        dice_index1 = ____
        dice_index2 = ____
        # Sample a pair of dice from bag1 and bag2
        point1 = ____
        point2 = ____
        key = "%s_%s" % (point1,point2)
        if point1 + point2 == 8: 
            if key not in results:
                results[key] = 1
            else:
                results[key] += 1
    return(pd.DataFrame.from_dict({'dice1_dice2':results.keys(),
		'probability_of_success':np.array(list(results.values()))*100.0/n}))
Editează și rulează codul