from random import*import matplotlib.pyplot as pltimport numpy as np# Épreuve de Bernoulli binaire :# - paramètre p : probabilité de succès# - renvoie True avec une probabilité p# - renvoie False avec une probabilité (1-p)# Documentation pour random : voir https://docs.python.org/fr/3/library/random.html# - random : fonction aléatoire dans l'intervalle [0, 1] des réels flottants.# - La fonction X : [0, 1] -> {True, False} définie par X(r) = (r < p) est une variable aléatoire # qui permet d'obtenir une distribution de probabilité (p, 1-p) sur {True, False}.# - La fonction aléatoire aleaBinaire est égale à la composée de random avec X : X o random. def aleaBinaire(p) :return (random() < p);# Variable aléatoire comptant le nombre de succès dans un schéma de Bernoulli# - paramètre n : nombre d'épreuves de Bernoulli# - paramètre p : probabilité de succès# - renvoie le nombre de succès def compteSuccesSchemaBernoulli(n, p) : s =0for i inrange(n):if(aleaBinaire(p)): s = s +1return s# Simulation de la loi binomiale pour un schéma de Bernoulli# - paramètre n : nombre d'épreuves de Bernoulli# - paramètre p : probabilité de succès# - paramètre nombreSimulations : nombre de simulations du schéma de Bernoulli # - renvoie un tableau de (n+1) fréquences, indiquant # pour chaque nombre possible de succès, sa fréquence statistique relativedef simulationLoiBinomiale(n, p, nombreSimulations) : frequences = [0]*(n +1) # fréquences à 0 pour les n+1 valeurs possibles du nombre de succèsfor i inrange(nombreSimulations): s = compteSuccesSchemaBernoulli(n, p) frequences[s] = frequences[s] +1# passage des fréquences absolues aux fréquences relativesreturnlist(map(lambda s : s/nombreSimulations, frequences))# Fonction permettant de calculer le cumul des éléments d'un tableau.def cumul(tableau) : n =len(tableau) s =list(tableau)for i inrange(1, n) : s[i] = s[i] + s[i-1]return s# Fonction calculant la moyenne des valeurs 0, ..., n pondérées # par la liste passée en argument# Documentation de dot : https://numpy.org/doc/stable/reference/generated/numpy.dot.html# - Cette fonction calcule le produit scalaire de deux vecteurs : ici elle donne la moyenne pondérée.def moyenne(frequencesRelatives) : taille =len(frequencesRelatives) valeurs =list(range(0, taille))return np.dot(frequencesRelatives, valeurs)# tests de la fonction nombreEpreuves =10 probabiliteSucces =1.0/6.0 nombreSimulations =100000 frequences = simulationLoiBinomiale(nombreEpreuves, probabiliteSucces, nombreSimulations)print("* Schéma de bernoulli "+str(nombreEpreuves) +", "+str(probabiliteSucces))print("** Simulation par "+str(nombreSimulations) +" expériences : ")print(" - fréquences relatives des succès : "+str(frequences))print(" - moyenne des succès : "+str(moyenne(frequences)))print(" - espérance des succès : "+str(nombreEpreuves * probabiliteSucces)) frequencesCumulatives = cumul(frequences) plt.style.use('_mpl-gallery')# données de fréquences: x = np.arange(0, nombreEpreuves +1, 1) y = frequences# graphique fig, ax = plt.subplots() ax.bar(x, y, width=1, edgecolor="white", linewidth=0.7) ax.set(xticks=np.arange(0, nombreEpreuves +1, 1), yticks=np.arange(0, max(frequences) +0.1, 0.1)) plt.show()# données de cumuls de fréquences xs = np.arange(0, nombreEpreuves +1, 1) ys = frequencesCumulatives# graphique fig, ax = plt.subplots() ax.bar(xs, ys, width=1, edgecolor="white", linewidth=0.7) ax.set(xticks=np.arange(0, nombreEpreuves +1, 1), yticks=np.arange(0, 1+0.1, 0.1)) plt.show()
* Schéma de bernoulli 10, 0.16666666666666666
** Simulation par 100000 expériences :
- fréquences relatives des succès : [0.16152, 0.32437, 0.28902, 0.15566, 0.05383, 0.01315, 0.00217, 0.00026, 2e-05, 0.0, 0.0]
- moyenne des succès : 1.6654599999999997
- espérance des succès : 1.6666666666666665
3.2 Annales
3.2.1 Bac 2024
Un jeu vidéo récompense par un objet tiré au sort les joueurs ayant remporté un défi. L’objet tiré peut être “commun” ou “rare”. Deux types d’objets commun ou rare sont disponibles, des épées ou des boucliers.
Les concepteurs du jeu vidéo ont prévu que :
la probabilité de tirer un objet rare est de \(7\%\) ;
si on tire un objet rare, la probabilité que ce soit une épée est de \(80\%\) ;
si on tire un objet commun, la probabilité que ce soit une épée est de \(40\%\).
Les parties A et B sont indépendantes.
3.2.1.1 Partie A
Un joueur vient de remporter un défi et tire au sort un objet . On note :
\(R\) l’événement “le joueur tire un objet rare” ;
\(E\) l’événement “le joueur tire une épée” ;
\(\bar{R}\) et \(\bar{E}\) sont les événements contraires de \(R\) et \(E\).
Dresser un arbre pondéré modélisant la situation, puis calculer \(P(R \cap E)\).
Calculer la probabilité de tirer une épée.
Le joueur a tiré une épée. Déterminer la probabilité que ce soit un objet rare. Arrondir le résultat au millième.
3.2.1.2 Partie B
Un joueur remporte \(30\) défis. On note \(X\) la variable aléatoire correspondant au nombre d’objets rares que le joueur obtient après avoir remporté \(30\) défis. Les tirages successifs sont considérés comme indépendants.
Déterminer, en justifiant, la loi de probabilité suivie par la variable \(X\). Préciser ses paramètres et son espérance.
Déterminer \(P(X < 6)\). Arrondir le résultat au millième.
Déterminer la plus grande valeur de \(k\) telle que \(P(X \geq k) \geq 0,5\). Interpréter le résultat dans le contexte de l’exercice.
Les développeurs du jeu vidéo, veulent proposer aux joueurs d’acheter un “ticket d’or” qui permet de tirer \(N\) objets. La probabilité de tirer un objet rare reste de \(7\%\). Les développeurs aimeraient qu’en achetant un ticket d’or, la probabilité qu’un joueur obtienne au moins un objet rare lors de ces \(N\) tirages soit supérieure ou égale à \(0,95\). Déterminer le nombre minimum d’objets à tirer pour atteindre cet objectif. On veillera à détailler la démarche mise en place.