Probabilité et algorithme


  • M

    Bonjour, je suis une élève de seconde, et j'ai un devoir qui associe les probabilités et les algorithmes. En voici l’énoncé :

    " Aurélien possède une clé USB sur laquelle il a mis ses jeux préférés. Sur sa clé, il y a :
    7 jeux cérébraux numérotés de 1 à 7;
    35 jeux d'aventure numérotés de 8 à 42;
    32 jeux de combats numérotés de 43 à 74 et
    26 jeux d'enquête numérotés de 75 à 100.
    Aurélien choisit un jeu au hasard sur sa clé.
    On considère les évènements :
    -A :" le jeu est un jeu de combat"
    -B :" le jeu est un jeu cérébral"

    1. Déterminer la probabilité de l'évènement A.
    2. Déterminé la probabilité de B(barre) et en déduire P(B).
    3. On considère l'algorithme suivant qui simule le choix d'Aurélien :

    Variable
    N,K deux nombres entiers.
    Début
    Affecter à K la valeur 0.
    TANT QUE N<74
    | Affecter à K la valeur K+1.
    FIN TANT QUE
    Afficher K.
    Fin

    a. Quel type de jeu souhaite Aurélien ?
    b. Dans cet algorithme que représente K ?
    c. Traduire cet algorithme avec le logiciel AlgoBox. Le tester. "

    Je crois avoir bien répondu aux questions 1 et 2, mais la 3 me pose plus de problème. Je pense que pour répondre aux a. et b. il faut traduire l'algorithme, ce que j'ai essayé de faire, mais lorsque je le teste il ne se termine pas et affiche :
    " Algorithme interrompu ligne 10 : dépassement de la capacité autorisée pour les boucles*** "
    Ma traduction est la suivante:

    1 VARIABLE
    2 N EST_DU_TYPE_NOMBRE
    3 K_EST_DU_TYPE_NOMBRE
    4 DEBUT_ALGORITHME
    5 K PREND_LA_VALEUR 0
    6 N PREND_LA_VALEUR floor(random()*100+1)
    7 TANT_QUE (N<74)FAIRE
    8 DEBUT_TANT_QUE
    9 K PREND_LA_VALEUR K+1
    10 FIN_TANT_QUE
    11 AFFICHER K
    12 FIN_ALGORITHME

    Quelqu'un voit-il où se trouve mon erreur ou mon incompréhension ? Si oui, pouvez-vous m'aider s'il vous plaît ? 😕
    Merci d'avance ! 😁


  • mtschoon

    Bonsoir,

    Cet algorithme donné par l'énoncé me parait bizarre...
    A la 5eme ligne , j'aurais mis N ≤ 14 ( au lieu de N<14) pour que cela corresponde aux 74 premiers jeux de la clé d'Aurélien.

    Ce n'est pas avec l'algorithme que tu dois faire au c) que tu trouveras les réponses au a) et b)

    Il faut que tu essaies de répondre au a) au b) en comprenant l'algorithme donné par l'énoncé.
    Ensuite , tu dois faire un algorithme rigoureux avec AlgoBox.

    PRINCIPE : la variable K sert de "compteur" : elle compte le nombre de fois où Aurélien a choisi un numéro N compris entre 1 et 74 sur sa clé USB avant de choisir un numéro N compris entre 75 et 100.

    Je vais tenter de t'expliquer pourquoi ton algorithme fait avec AlgoBox ne fonctionne pas.

    Suppose qu'à la ligne 6 , la valeur aléatoire de N soit 80 ( c'est à dire N>74). Dans ce cas , la boucle du "Tant que" ne s'applique pas et le programme que tu as écrit doit afficher 0 ( car K=0)

    Suppose qu'à la ligne 6 , la valeur aléatoire de N soit 70 ( c'est à dire N≤74). Dans ce cas la boucle du "Tant que" tourne en permanance et K prend les valeurs 1,2,3,4,5,...indéfiniment.
    En bref , une "boucle sans fin " d'où dépacement de capacité.

    Il faut donc que tu revois l'organisation de ton programme ."


  • M

    Bonjour et merci de m'avoir répondu ! 😄

    Pour les questions a) et b), j'ai fini par trouver grâce a un ami.

    Effectivement, lorsque je lance le mode pas à pas sur AlgoBox pour voir ce qui ne va pas quand N≤74, K prend des valeurs a l'infini. J'ai cherché avec des amis qui sont bien plus doués en math que moi, et il ont le même problème que moi. Nous ne savons pas où ni qu'est ce qui ne va pas. 😕

    Et que voulez-vous dire par "revoir l'organisation de mon programme" ? 😕

    Merci encore de m'avoir répondu !


  • mtschoon

    La ligne 6 de ton algorithme actuel "N PREND_LA_VALEUR floor(random()*100+1)"
    doit être dans la boucle "Tant que" , pour que la valeur de N change à chaque "tour" de la boucle.

    Avant la bouche "Tant que" , tu initialises N en lui donnant une valeur : par exemple "N PREND_LA_VALEUR 0"

    Et bien sûr , tu lances le mode pas à pas sur AlgoBox , pour vérifier si tout fonctionne.


  • M

    Ah ! D'accord ! Mais il y a une truc que je comprend pas, j'ai fais le mode pas à pas, et quand N prend une valeur supérieur a 74, K prend quand même 1 :

    "Entrée dans le bloc DEBUT_TANT_QUE/FIN_TANT_QUE : condition vérifiée (ligne 😎
    #19 Nombres/chaines (ligne 9) -> N:89 | K:8
    #20 Nombres/chaines (ligne 10) -> N:89 | K:9
    Sortie du bloc DEBUT_TANT_QUE/FIN_TANT_QUE (ligne 11)"

    C'est normal ?


  • M

    Non, en fait c'est bon, j'avais mis d'abord :
    N prend la valeur floor(random()*100+1) et ensuite :
    K prend la valeur K+1
    mais en les inversant, ça fonctionne !

    Merci beaucoup !


Se connecter pour répondre