Aller au contenu

Exercices corrigés — Algorithmique et Python (Première)

Quatre niveaux de difficulté, du plus simple au plus exigeant. Chaque exercice a sa correction détaillée, étape par étape.

2 exercices de niveau « Challenge ». Voir les 8 exercices.

Exercice 7 Challenge

Avec la fonction bernoulli(p) du cours, écrire une fonction estimation(N) qui simule N fois trois essais indépendants de paramètre 0,7 et renvoie la fréquence des séries comportant exactement deux succès. Quelle valeur attend-on pour N grand ?

Voir la correction
Correction détaillée

chaque série se simule par trois appels indépendants à bernoulli(0.7), dont la somme s est le nombre de succès ; on compte les séries où s vaut 2 :

def estimation(N):
    favorables = 0
    for repetition in range(N):
        s = bernoulli(0.7) + bernoulli(0.7) + bernoulli(0.7)
        if s == 2:
            favorables = favorables + 1
    return favorables / N

Valeur théorique : les chemins avec exactement deux succès sont SSE, SES et ESS, chacun de probabilité 0,72 × 0,3 = 0,147 ; la probabilité vaut 3 × 0,147 = 0,441.
Pour N grand, la fréquence renvoyée fluctue autour de 0,441 : par exemple 0,4378 ou 0,4452 pour N = 10 000. Deux exécutions donnent des résultats différents, et la fluctuation diminue quand N augmente. La simulation confirme le calcul mais ne le remplace pas : elle donne une valeur approchée, l'arbre donne la valeur exacte.

Exercice 8 Challenge

On reprend les fonctions moyenne_de(n) et echantillons(n, repetitions) du cours, pour un dé équilibré (μ = 3,5 et σ ≈ 1,71). a) Quelle est la zone à deux écarts types pour la moyenne de n = 100 lancers ? b) On exécute echantillons(100, 1000) : quelle proportion des 1 000 moyennes obtenues s'attend-on à trouver dans cette zone ? c) Écrire une fonction qui calcule cette proportion à partir de la liste renvoyée.

Voir la correction
Correction détaillée

a) L'écart type de la moyenne de n = 100 lancers est σn1,7110 = 0,171. La zone à deux écarts types est [3,5 − 0,342 ; 3,5 + 0,342] ≈ [3,16 ; 3,84].
b) Dans les situations usuelles, environ 95 % des moyennes d'échantillon tombent dans la zone à deux écarts types : sur 1 000 échantillons, on attend de l'ordre de 950 moyennes entre 3,16 et 3,84, les autres s'en écartant par fluctuation d'échantillonnage.
c) On parcourt la liste et l'on compte les moyennes dont l'écart à 3,5 ne dépasse pas 0,342 :

def proportion_dans_zone(L):
    dedans = 0
    for m in L:
        if abs(m - 3.5) <= 0.342:
            dedans = dedans + 1
    return dedans / len(L)

L'appel proportion_dans_zone(echantillons(100, 1000)) renvoie une valeur proche de 0,95. En remplaçant 100 par 400, l'écart type de la moyenne est divisé par 2 et la zone se resserre à [3,33 ; 3,67], mais la proportion reste voisine de 0,95 : c'est la concentration des moyennes autour de μ que l'on observe.