Un tirage sans remise
Exercice supplémentaire · niveau 3 (difficile) · sciences numériques et technologie (seconde), chapitre 6 — Listes et simulations aléatoires · Le module random et les simulations
Énoncé
Le tirage du loto ne redonne jamais deux fois le même numéro. Écrire une fonction tirage_loto() renvoyant numéros distincts entre et , sans utiliser random.sample. Comparer deux stratégies.
Corrigé
Stratégie 1 — rejeter les doublons :
import random
def tirage_loto():
tirage = []
while len(tirage) < 6:
n = random.randint(1, 49)
if n not in tirage:
tirage.append(n)
return tirage
Stratégie 2 — piocher dans une urne :
def tirage_loto_urne():
urne = [i for i in range(1, 50)]
tirage = []
for k in range(6):
i = random.randint(0, len(urne) - 1)
tirage.append(urne[i])
urne.pop(i) # le numéro sorti quitte l'urne
return tirage
Comparaison. La première est plus courte, mais son nombre de tours est imprévisible : chaque doublon oblige à recommencer. Ici la probabilité de collision reste faible, donc elle convient ; mais pour tirer numéros sur , elle deviendrait très lente — et pour en tirer elle ne s'arrêterait jamais.
La seconde effectue exactement tours quoi qu'il arrive, et modélise fidèlement le tirage physique. C'est celle qu'il faut préférer, parce que sa terminaison ne dépend pas de la chance.
Les autres exercices de ce chapitre Le cours du chapitre
Un blocage sur cet exercice ? Le tuteur d'Adloun guide par questions, sans donner la réponse.