Inscription / Connexion Nouveau Sujet
Niveau première
Partager :

Problème python probabilité

Posté par
lola787
13-11-20 à 12:49

Bonjour, je dois écrire un algorithme Python mais je n'y arrive pas. Voilà l'énoncé:
On dispose d'un de équilibré à 6 faces et de deux urnes : l'urne A contient deux boules rouges et 3 vertes, et l'urne B contient 1 boule rouge et deux vertes.
On lance le dé et si le résultat est 1 ou 2 alors on tire une boule dans l'urne A, sinon on tire dans l'urne B.
On considère que la partie est gagnante si on tire une boule rouge.
On note les évènements S = "Le dé donne 1 ou 2" et R = " On tire une boule rouge ".
1) Écrire un algorithme en Python permettant de simuler cette partie.
2) Modifier cet algorithme pour simuler n parties (où n est un nombre entier naturel non nul) et pour compte le nombre de parties gagnantes.
Merci d'avance pour votre aide.

Posté par
ZEDMAT
re : Problème python probabilité 13-11-20 à 14:27

Bonjour,

Peut-être pourrais tu "simuler" le déroulé d'une partie et donc traiter mathématiquement  ce "problème" (un arbre pondéré, tu saurais faire ?).
Quelle est la probabilité de "gagner" ? celle de perdre ?

Ensuite faire l'algorithme d'une partie en langage courant...
et puis après, écrire le script de cet algorithme en langage python.

Qu'en penses tu ?

J'invite tous mes collègues aidants que cet exercice "intéresse", à participer (positivement bien sûr ) et à apporter leur contribution au fil de cette discussion .  

Posté par
lola787
re : Problème python probabilité 13-11-20 à 14:34

Bonjour,
J'ai déjà fait un arbre pondéré et calculer les probabilités de gagner et de perdre.
Et pour le script j'ai fait quelque chose mais ça ne marche pas et je ne vois pas quoi faire d'autre.

from random import*
for i in range(1,6):
    if résulat < 3:
        for k in range(1, 5):
            if résultat < 3:
                print("Bravo! Vous avez tiré une boule rouge.")
            else:
                print("Dommage! Vous avez tiré une boule verte.")
    else:
        for i in range(1, 3):
            if résultat < 2:
                print("Bravo! Vous avez tiré une boule rouge.")
            else:
                print("Dommage! Vous avez tiré une boule verte.")

Posté par
ZEDMAT
re : Problème python probabilité 13-11-20 à 15:11

D'accord...
Donc tu as saisi ton script sous python et tu as obtenu un message d'erreur.

Le script de ton dernier message, tu l'as recopié ? ce n'est pas celui saisi son python.
Par exemple en ligne 3 il y a résulat au lieu de résultat ...

Je te propose de faire un copier-coller de ton script sous python  et de le mettre (coller ) directement dans ton message.

Je vais tester ton script car ce que j'ai écrit diffère assez de ce que tu as essayé ... On va rester sur TA version.

Posté par
lola787
re : Problème python probabilité 13-11-20 à 15:24

Je ne suis pas sure d'avoir compris ce que vous avez dis mais voila mon script venant de Python.

from random import*
for i in range(1,6):
    if résulat < 3:
        for k in range(1, 5):
            if résultat < 3:
                print("Bravo! Vous avez tiré une boule rouge.")
            else:
                print("Dommage! Vous avez tiré une boule verte.")
    else:
        for b in range(1, 3):
            if résultat < 2:
                print("Bravo! Vous avez tiré une boule rouge.")
            else:
                print("Dommage! Vous avez tiré une boule verte.")

Posté par
ZEDMAT
re : Problème python probabilité 13-11-20 à 15:30

Dans ton script :

1) la variable "résultat" n'est pas définie

2) je ne vois pas l'intérêt de faire une boucle dans la question 1 mais indépendamment de cela quand tu écris
for i in range(1,6)
i prend les valeurs 1,2,3,4,5 mais pas 6 (vérifie dans la documentation de python)

3) l'appel de la bibliothèque random (première ligne) laisserait à penser que tu vas faire usage de la commande random ou de randint... or ce n'est pas le cas. Dommage.

Posté par
ZEDMAT
re : Problème python probabilité 13-11-20 à 15:52

Nous sommes à la question 1 !

Je te suggère de supprimer toutes les boucles

Le jeu se fait en 2 temps (2 tirages). Chacun de ces tirages est aléatoire et donne un résultat représenté par un entier : de 1 à 6 pour le dé et de 1 (rouge) à 2 (vert) pour la boule. Je te suggère d'essayer la commande randint() (consulte la doc) ou à défaut (si tu connais déjà) random.

Question annexe en vue de la question 2 : as tu appris à faire une fonction avec l'instruction def nom():

Posté par
ZEDMAT
re : Problème python probabilité 13-11-20 à 16:02

Essaye de faire avec mes 2 derniers messages... en attendant mon retour ou la venue d'un collègue .

Je vais aller m'aérer une bonne heure mais je ne serai pas loin : 1km maxi

Posté par
lola787
re : Problème python probabilité 13-11-20 à 16:10

Je crois que ça marche!

from random import*
s = randint(1, 6)
print(s)
if s < 3:
    randint(1, 5)
    if s < 3:
        print("Bravo! Vous avez tiré une boule rouge.")
    else:
        print("Dommage! Vous avez tiré une boule verte.")
else:
    r = randint(1, 3)
    if r < 2:
        print("Bravo! Vous avez tiré une boule rouge.")
    else:
        print("Dommage! Vous avez tiré une boule verte.")


Et non je n'ai pas appris à faire une fonction avec l'instruction def nom():

Posté par
ZEDMAT
re : Problème python probabilité 13-11-20 à 17:59

Ton script "tourne" effectivement sans provoquer de message d'erreur
MAIS
je crains fort qu'il ne donne pas tous les résultats attendus....

from random import*
s = randint(1, 6)
# Ok s va prendre une valeur aléatoire entière dans {1, 2 ,3, 4, 5, 6}
donc on simule un lancer d'un dé.

print(s)
if s < 3:
# si s prend la valeur 1 ou 2 (<3), alors
   randint(1, 5)
# là il manque quelque chose : qu'est ce qui prend la valeur aléatoire obtenue ?
    if s < 3:
# tel qu'est écrit ton programme, la variable s n'a pas changé de valeur (voir remarque précédente)
        print("Bravo! Vous avez tiré une boule rouge.")
    else:
        print("Dommage! Vous avez tiré une boule verte.")
else:
    r = randint(1, 3)
    if r < 2:
        print("Bravo! Vous avez tiré une boule rouge.")
    else:
        print("Dommage! Vous avez tiré une boule verte.")

Posté par
lola787
re : Problème python probabilité 13-11-20 à 18:11

Il faut que je mette une lettre? Comme ça

from random import*
s = randint(1, 6)
print(s)
if s < 3:
    f = randint(1, 5)
    if f < 3:
        print("Bravo! Vous avez tiré une boule rouge.")
    else:
        print("Dommage! Vous avez tiré une boule verte.")
else:
    r = randint(1, 3)
    if r < 2:
        print("Bravo! Vous avez tiré une boule rouge.")
    else:
        print("Dommage! Vous avez tiré une boule verte.")

Posté par
ZEDMAT
re : Problème python probabilité 13-11-20 à 18:48

Ainsi écrit ton script simule bien -me semble-t-il- une partie de ce jeu.

Tu essayes de faire la question 2 ?

Posté par
lola787
re : Problème python probabilité 13-11-20 à 19:09

J'ai fait ça et c'est cohérent avec mes calculs. Qu'en pensez vous?

from random import*
somme = 0
n = 1000
for i in range(1, n+1):
    s = randint(1, 6)
    print(s)
    if s < 3:
        f = randint(1, 5)
        if f < 3:
            somme = somme + 1
            print("Bravo! Vous avez tiré une boule rouge.")
        else:
            print("Dommage! Vous avez tiré une boule verte.")
    else:
        r = randint(1, 3)
        if r < 2:
            somme = somme + 1
            print("Bravo! Vous avez tiré une boule rouge.")
        else:
            print("Dommage! Vous avez tiré une boule verte.")
print(somme)

Posté par
ZEDMAT
re : Problème python probabilité 13-11-20 à 19:30

Bien .

1) Pour la lisibilité du résultat, je te suggère de désactiver tous les print (sauf le dernier bien sûr). Ne les efface pas mais transforme les en commentaires (tu mets un # en début de ligne.

2) Ne connais tu pas l'instruction input() qui permet de saisir en cours d'exécution du programme une valeur telle que n par exemple ?
n=int(input("Nbre de parties ? ))

3) Prends n très grand (100000 si tu veux mais après avoir enlevé les print)
Compare la fréquence des parties gagnantes avec ce que tu as trouvé par le calcul.
(tu as trouvé quoi au fait ?)

Posté par
lola787
re : Problème python probabilité 13-11-20 à 19:54

from random import *
somme = 0
n = int(input("Nombre de parties ?"))
for i in range(1, n + 1):
    s = randint(1, 6)
    print(s)
    if s < 3:
        f = randint(1, 5)
        if f < 3:
            somme = somme + 1
            # print("Bravo! Vous avez tiré une boule rouge.")
        else:
            somme = somme
            # print("Dommage! Vous avez tiré une boule verte.")
    else:
        r = randint(1, 3)
        if r < 2:
            somme = somme + 1
            # print("Bravo! Vous avez tiré une boule rouge.")
        else:
            somme = somme
            # print("Dommage! Vous avez tiré une boule verte.")
print(somme)


J'ai calculé P(R)=0,35 et pour 10000 parties j'en ai 3501 de gagnées ce qui est cohérent.

Posté par
ZEDMAT
re : Problème python probabilité 13-11-20 à 20:36

P(R) = 32/90 = 0,3556

Bon WE.

Posté par
lola787
re : Problème python probabilité 13-11-20 à 20:59

Merci beaucoup pour votre aide. Bon week-end.



Vous devez être membre accéder à ce service...

Pas encore inscrit ?

1 compte par personne, multi-compte interdit !

Ou identifiez-vous :


Rester sur la page

Inscription gratuite

Fiches en rapport

parmi 1675 fiches de maths

Désolé, votre version d'Internet Explorer est plus que périmée ! Merci de le mettre à jour ou de télécharger Firefox ou Google Chrome pour utiliser le site. Votre ordinateur vous remerciera !