IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

tirage avec remise


Sujet :

Python

  1. #1
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Septembre 2017
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2017
    Messages : 42
    Par défaut tirage avec remise
    Bonjour, je dois créer une première fonction qui modélise une urne avec a boules bleues et b boules rouges puis une autre fonction qui réalise un tirage avec remise dans cette urne. Je dois ensuite appliquer ces 2 fonctions pour une urne contenant 10 boules bleues et 10 rouges et réaliser un tirage avec remise qui donne le résultat sous la forme : "vous avez tiré une boule bleue" ou "vous avez tiré une boule rouge".

    J'ai crée la fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    def modeliser_urne(a,b):
        urne=a*[1]+b*[0] #boules rouges modélisées par des 0 et boules bleues par des 1
        return urne
    #tirage avec remise 
    def tirage(urne):
        return rd.choice(urne)
    et c'est ici que je bloque

    merci pour votre aide

  2. #2
    Membre Expert

    Homme Profil pro
    Ingénieur calcul scientifique
    Inscrit en
    Mars 2013
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur calcul scientifique

    Informations forums :
    Inscription : Mars 2013
    Messages : 1 229
    Par défaut
    ok tu as l'air bien parti.

    Et qu'est ce qui t'empeche d'écrire ca à la suite de ton code ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    mon_urne = modeliser_urne(10,10)
    une_boule_tiree = tirage(mon_urne)
     
    if une_boule_tiree == 1 :
          print("Vous avez tiré une boule bleue")
    else :
          print("Vous avez tiré une boule rouge")

  3. #3
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Septembre 2017
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2017
    Messages : 42
    Par défaut
    J’ai essayé quelque chose de la sorte mais cela n’a pas marché, Merci beaucoup pour votre aide !

  4. #4
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Septembre 2017
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2017
    Messages : 42
    Par défaut
    Finalement le programme ne marche pas ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    def modelisation_urne(p,q):
        urne=p*[1]+q*[0] #les boules bleues sont modélisées par des 1 et les boules rouges par des 0
        return urne
     
        #tirage avec remise
        def tirage(urne):
            return rd.choice(urne)
     
        mon_urne=modelisation_urne(10,10)
        boule_tiree = tirage(mon_urne)
     
        if boule_tiree==1 :
            print("Vous avez tiré une boule bleue")
        else :
            print("Vous avez tiré une boule rouge")

  5. #5
    Membre Expert
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2013
    Messages
    1 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 617
    Par défaut
    Au premier "return" rencontré, la fonction s'arrête.

  6. #6
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Septembre 2017
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2017
    Messages : 42
    Par défaut
    Oui mais du coup, rd de rd.choice(urne) n’est pas défini ...

  7. #7
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 776
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 776
    Par défaut
    Salut,

    Citation Envoyé par gloria75 Voir le message
    Oui mais du coup, rd de rd.choice(urne) n’est pas défini ...
    En apprenant à programmer avec Python, vous avez certainement entendu parler de blocks et d'indentation.
    Relisez votre code: toutes les instructions sont définies dans le block qui définit celui de la fonction modelisation_urne... Et comme la 2ème instruction est "return...", les instructions suivantes ne sont jamais exécutées.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  8. #8
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Septembre 2017
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2017
    Messages : 42
    Par défaut
    Je ne vois vraiment pas pourquoi le programme ne marche pas

  9. #9
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 776
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 776
    Par défaut
    Citation Envoyé par gloria75 Voir le message
    Je ne vois vraiment pas pourquoi le programme ne marche pas
    Ben, c'est que vous devez revoir le chapitre qui parle de la structure (blocks et indentation) des scripts Python dans votre tuto. préféré ou jetez un œil ici (et dans ce qui précède).

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  10. #10
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Septembre 2017
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2017
    Messages : 42
    Par défaut
    Je comprends bien le principe de l’indentation, ma deuxième fonction ne doit pas être indenté, c’est cela ?

  11. #11
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 776
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 776
    Par défaut
    Citation Envoyé par gloria75 Voir le message
    Je comprends bien le principe de l’indentation, ma deuxième fonction ne doit pas être indenté, c’est cela ?
    Si vous n'êtes pas encore sûre de votre coup, vous relisez le tuto.
    Et si vous y croyez, vous essayez: la machine ne va pas vous mordre!

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  12. #12
    Membre expérimenté
    Profil pro
    Loisir
    Inscrit en
    Novembre 2011
    Messages
    159
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Loisir

    Informations forums :
    Inscription : Novembre 2011
    Messages : 159
    Par défaut
    Bonjour,

    pour allez plus loin dans votre réflexion, posez vous la question de savoir quelles sont les lignes de votre code qui "appartiennent" a votre fonction modelisation_urne(). A partir de là, vous devriez comprendre pourquoi vous avez un problème, qui est, comme signalé, par les autres membres un problème d'indentation.

  13. #13
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Septembre 2017
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2017
    Messages : 42
    Par défaut tirage sans remise
    Bonjour, je dois créer une première fonction qui modélise une urne avec a boules bleues et b boules rouges puis une autre fonction qui réalise un tirage sans remise dans cette urne. Je dois ensuite appliquer ces 2 fonctions pour une urne contenant 10 boules bleues et 10 rouges et réaliser un tirage sans remise qui donne le résultat sous la forme : "vous avez tiré une boule bleue" ou "vous avez tiré une boule rouge" et "nombre de boules restant dans l'urne:" xxx.
    Je ne vois pas comment introduire le nombre de boules restant dans l'urne, merci d'avance

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    import random as rd
    global urne
    def modelisation_urne(a,b):
        urne=a*[1]+b*[0] #les boules bleues sont modélisées par des 1 et les boules rouges par des 0
        return urne
     
    #on effectue un tirage sans remise
    def tirage(urne):
        rd.shuffle(urne)
        dernier=urne[-1]
        urne.pop() 
        return dernier
     
     
    urne=modelisation_urne(10,10) 
    if tirage(urne)==1: #1 renvoie à la boule blanche
        print("Vous avez tiré une boule bleue")
    else:
        print("Vous avez tiré une boule rouge")

  14. #14
    Membre Expert
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2013
    Messages
    1 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 617
    Par défaut
    Pourquoi créer un autre fil ?

    Une piste :
    Essaie avec 20 ou 21 (comme ici).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    import random as rd
    global urne
    def modelisation_urne(a,b):
        urne=a*[1]+b*[0] #les boules bleues sont modélisées par des 1 et les boules rouges par des 0
        return urne
     
    #on effectue un tirage sans remise
    def tirage(urne):
        rd.shuffle(urne)
        dernier=urne[-1]
        print("urne avant retrait : ", urne)
        urne.pop()
        print("urne après retrait : ", urne)
        print(dernier)
        return dernier
     
     
    urne=modelisation_urne(10,10)
    print("urne initiale : ", urne)
    for i in range(21):
        if tirage(urne)==1: #1 renvoie à la boule blanche
            print("Vous avez tiré une boule bleue")
        else:
            print("Vous avez tiré une boule rouge")

  15. #15
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Septembre 2017
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2017
    Messages : 42
    Par défaut
    Je pense avoir réussi, je voudrais le modifier pour qu'il réalise n tirages avec remise. On stocke dans une variable le nombre de fois ou on tire une boule rouge et le programme doit afficher : "la proba de tirer une boule bleue est ... pour n tirages"). Voici ce que j'ai fait mais je n'arrive pas à le finaliser

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    import random as rd
    def modelisation_urne(a,b):
        urne=a*[1]+b*[0] #les boules bleues sont modélisées par des 1 et les boules rouges par des 0
        return urne
     
    #on effectue un tirage avec remise
    def tirage(urne):
        return rd.choice(urne) 
     
    urne=modelisation_urne(10,10) 
    if tirage(urne)==1: 
        print("Vous avez tiré une boule bleue")
    else:
        print("Vous avez tiré une boule rouge")
     
    #tirages successifs avec remise et enregistrement du nombre de fois où on a obtenu une boule noire 
    succes=0
    nb=10
    k=0
    for i in range(nb):
        if rd.choice(urne)==k:
            succes=succes+1

  16. #16
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Septembre 2017
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2017
    Messages : 42
    Par défaut
    J'ai essayé avec 20 et ça marche, merci beaucoup ! J'aimerai modifier ce programme pour réaliser n tirages sans remise. On stocke dans une variable le nombre de fois où on tire une boule rouge et je veux afficher "la proba de tirer une rouge est de ... pour n tirages" et "il reste ... boules dans l'urne"
    merci pour votre aide

  17. #17
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Septembre 2017
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2017
    Messages : 42
    Par défaut
    Quelqu’un pour m’aider svp ?

  18. #18
    Membre Expert
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2013
    Messages
    1 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 617
    Par défaut
    Ce n'est pas très compliqué de compter le nombre de 0 et de 1 restant dans la liste et de faire un rapport, si ?

  19. #19
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Septembre 2017
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2017
    Messages : 42
    Par défaut
    Non mais je n’arrive pas à le traduire en python

  20. #20
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Septembre 2017
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2017
    Messages : 42
    Par défaut
    Pour nb=10, j'obtiens 0
    pour nb=100, j'obtiens 1
    J'ai l'impression qu'il y a une erreur dans mon programme, merci pour vos réponses

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    import random as rd
     
    def modelisation_urne(a,b):
        urne=a*[1]+b*[0] #les boules bleues sont modélisées par des 1 et les boules rouges par des 0
        return urne
     
    #on effectue un tirage avec remise
    def tirage(urne):
        return rd.choice(urne) 
     
     
    #nombre de boules rouges tirées pour nb tirages avec remise 
    def tirages(urne,nb):
        succes=0
        for i in range(nb):
            if rd.choice(urne)==0:
                succes=succes+1
            return succes
     
    #P(X=k)
    def proba(urne,nb,k,n):
        X=0
        for i in range(n):
            if tirages(urne,nb)==k:
                X=X+1
        return X/n
     
    (a,b)=(20,10)
    urne=a*[1]+b*[0]
    n=1
    nb=10000
    k=1
     
    print("la probabilite de tirer",k,"boule bleue en faisant",n,"fois le tirage avec remise de", nb, "boules est", proba(urne,nb,k,n))

Discussions similaires

  1. Tirage avec remise - Bootstrap
    Par FanFan44 dans le forum SAS STAT
    Réponses: 3
    Dernier message: 10/07/2013, 16h56
  2. interprêtation de la macro tirage avec remise
    Par nostress dans le forum Macro
    Réponses: 6
    Dernier message: 09/06/2008, 15h58
  3. Tirage aléatoire avec remise
    Par ndiayette dans le forum SAS STAT
    Réponses: 3
    Dernier message: 16/05/2008, 22h14
  4. créer un numero incrémenter avec remise a 0 annuel
    Par p'tite Sandrine dans le forum Access
    Réponses: 17
    Dernier message: 29/01/2007, 10h17
  5. Probleme de tirage avec rand ?
    Par sunshine33 dans le forum MFC
    Réponses: 5
    Dernier message: 14/01/2004, 15h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo