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

JavaScript Discussion :

Calcul de probabilité


Sujet :

JavaScript

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    191
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 191
    Points : 80
    Points
    80
    Par défaut Calcul de probabilité
    Salut !! Donc je galère depuis hier soir dessus donc on va dire presque 8h et je m'avoue vaincu !!
    Je vais essayé d'être au plus clair avec mes codes car j'ai fait tellement d’essais que je commence à me perdre aussi !!

    Donc on essaye de trouver le bon chiffre en fonction d'un choix de l'ordi et si c'est pas bon... une aide sous forme de probabilité apparait

    Code HTML : 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
    <!doctype html>
    <html lang="fr">
        <head>
            <meta charset="utf-8">
            <title>Proba</title>
            <link rel="stylesheet" href="style.css">
        </head>
        <body>
        <div id="choix">
            <div id="up">UP</div>
            <div id="number"></div>
            <div id="down">DOWN</div>
            <button id="validation">VALIDER</button>
            <button id="proba">Probabilité</button>
            <p id="text"></p>
        </div>
        </body>
        <script src="index.js"></script>
    </html>

    Code JavaScript : 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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    var num = document.getElementById('number');
    var up = document.getElementById('up');
    var down = document.getElementById('down');
    var validation = document.getElementById('validation');
    var proba = document.getElementById('proba');
    var ia = Math.floor(Math.random() * 6 + 1);
    console.log(ia);
     
    up.addEventListener('click',ajout);
    down.addEventListener('click',enlev);
    validation.addEventListener('click',valide);
    proba.addEventListener('click', probabil);
     
    var min = 1;
    var max = 6;
    var iValid = i;
    num.innerHTML = min;
    var i = min;
     
    /* --- Création d'un tableau pour les probabilités--- */
    var tabproba = [];
    y = 1
    while(y<=6){
        tabproba.push(y);
        y++
    }
     
    /* --- partie fonction --- */
     
    function ajout(){
        if(i < max){
            i++
        }
        return valor();   
    }
    function enlev(){
        if(i > min){
            i--;
        }
        return valor();
    }
    function valor(){
        num.innerHTML = i;
        if(i !== iValid){
            validation.disabled = false;
        }
        return i;
    }
    function valide(){
        var list = document.getElementById('text')
        list.innerHTML = list.innerHTML + "Vous avez choisi le chiffre n° " + i +"<br>";
        iValid = i;
        validation.disabled = true;
    }
    function probabil(){
        var result = document.getElementById('resultat');
        var help = document.getElementById('probatxt');
        var ref = tabproba.indexOf(i);
        var del = tabproba[ref];
        if(i > ia){
            result.innerHTML = "Ce chiffre est trop grand !"
            x = i;
            while(x<tabproba.length){
                tabproba.splice(0, 1);
                x++
            }
            help.innerHTML += "Vous avez 1 chance sur " + tabproba.length + " de trouver la bonne réponse <br>"
        }else if(i < ia){
            result.innerHTML = "Ce chiffre est trop petit !"
            x = 1;
            while(x<=del){
                tabproba.splice(0, 1);
            x++
            }
            help.innerHTML += "Vous avez 1 chance sur " + tabproba.length + " de trouver la bonne réponse <br>"
        }
    }

    Donc en faite l'idée est de faire un tableau et de créer une jonction entre le choix du joueur et ce tableau. En fonction du choix du joueur, on va chercher l'index du tableau en fonction de sa réponse, puis supprimer les parties du tableau qui deviennent inutile pour avoir une nouvelle longueur de tableau et ainsi avoir un nouveau chiffre de probabilité...
    Exemple : Le chiffre choisie par l'IA est 6, le joueur choisie 3, le texte va lui dire qu'il est trop petit est qu'il lui reste du coup une chance sur 3 de trouver la bonne réponse, car on aura retiré le 1 le 2 et le 3 !! Le souci c'est qu'après notre tableau a le chiffre 4 à l'indice 0, 5 à l'indice 1 et 6 à l'indice 2, et que si le joueur après choisi le 4, avec mon code, ça enlève tout ce qui est normal... Bref c'est assez complexe quand même

    PS : comme vous pouvez le voir a travers mon code un peu bateau, je suis encore dev junior... donc merci d'éviter Querry et les codes trop complexe

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Je pense que tu t'es pris la tête pour pas grand chose.

    1- Il a simplement toujours 1 chance sur (max - min + 1) *.
    Il suffit de mettre à jour, soit min, soit max, avec le choix du joueur.

    2- * A moins que les chiffres ne se suivent pas ! ** (Ce qui peut être intéressant aussi !)
    Exemple : trouver une chiffres parmi [12, 24, 27, 38, 52,....., 98].

    Là, on peut effectivement passer par un tableau, en supprimant à chaque tour :
    • soit ceux plus petits,
    • soit ceux plus grands

    On aura alors 1 chance sur arr.length.

    ** Cela dit, cette 2ème méthode fonctionne aussi dans le 1er cas.


    N.B. Les indices du tableau n'ont aucun rôle à jouer ici.
    Dernière modification par Invité ; 26/10/2019 à 13h21.

  3. #3
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Points : 22 933
    Points
    22 933
    Billets dans le blog
    125
    Par défaut


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
      // inconnus !
        let result = document.getElementById('resultat');
        let help = document.getElementById('probatxt');

  4. #4
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 681
    Points : 5 221
    Points
    5 221
    Par défaut
    Citation Envoyé par danielhagnoul Voir le message


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
      // inconnus !
        let result = document.getElementById('resultat');
        let help = document.getElementById('probatxt');
    Déjà oui!

    Et puis si tu repenses au "fond du problème", tu peux largement simplifier ton code;
    Tu as quand même 5 fonctions et un très grand nombre de variables, pour un "plus ou moins"...

  5. #5
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 681
    Points : 5 221
    Points
    5 221
    Par défaut
    Imaginons ce html

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <div>
    	<label for="choix">Saisissez un nombre entre 1 et 6.
    		<input id="choix" type="text" size="1" maxlength="1" />
    	</label>
    	<button id="val">Tester</button>
            <button id="start">Nouvelle partie</button>
            <p id="text"></p>
    </div>

    Code javascript : 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
    document.getElementById("start").addEventListener("click",()=>{
    	const ch = document.getElementById("choix");
    	const t = document.getElementById("text");
    	t.innerHTML="";
    	ch.value="";
    	const alea=Math.floor(Math.random() * 6 + 1);
     
    	document.getElementById("val").addEventListener("click",()=>{
    		if(isNaN(ch.value)|| ch.value>6 || ch.value<1){
    			t.innerHTML="Vous n'avez rien compris... Relisez la consigne.";
    		}
    		else{
    			t.innerHTML = (ch.value!=alea) ?
    			ch.value < alea ?
    			`plus grand! Vous avez 1 chance sur ${Number(6-ch.value)}.`:
    			`plus petit! Vous avez 1 chance sur ${Number(ch.value-1)}.`:
    			"Bravo! Vous pouvez tenter une nouvelle partie."
    		}
    	},false)
    },false);

    http://javatwist.imingo.net/plusmoins2.htm (ouvre la console pour voir le nombre choisi.)

  6. #6
    Invité
    Invité(e)
    Par défaut
    @javatwister
    1- Tu devrais définir "6" et "1" comme constantes (max / min).

    2- Peux-tu proposer une solution avec un array/objet ? *

    * En fait, ce principe pourrait aussi s'appliquer, non plus avec des chiffres, mais avec des "caractéristiques".

    Je pense au jeu : "Qui est-ce ?".
    • chaque personnage possède plusieurs "caractéristiques" : "moustache", "chapeau", "lunettes", "cheveux blonds",.....
    • il n'y a pas deux personnages qui ont un groupe de caractéristiques identique (ce qui permet par conséquent de l'identifier)

    En énonçant une "Le personnage a-t-il telle caractéristique ?", la réponse sera oui ou non (true/false) :
    • on élimine ceux qui ne correspondent pas
    • on peut indiquer le nombre de personnages restants (1 chance sur x restants).

  7. #7
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 681
    Points : 5 221
    Points
    5 221
    Par défaut
    Eh bien comme tu le disais dans ton précédent messsage, je ne vois pas l'intérêt d'un tableau ici vu le "protocole" de départ (1 entier dans une plage continue).

  8. #8
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 681
    Points : 5 221
    Points
    5 221
    Par défaut
    (Je réponds après ton édit);
    Oui, je vois bien le principe du Qui est-ce? mais là, on part un peu loin de la demande!

  9. #9
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par d3LTa7 Voir le message
    ...je suis encore dev junior...
    Je me trompe peut-être, mais à mon vis, d3LTa7 cherche juste à se former, en faisant des EXERCICES pratiques.

    1- C'est pourquoi il me semble intéressant de traiter aussi le cas avec un array, pour voir une autre manière de faire.

    2- Et je lui en propose simplement un autre, un peu plus ambitieux, dès qu'il aura terminé celui-ci.

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    191
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 191
    Points : 80
    Points
    80
    Par défaut
    Salut et désolé de ne répondre que maintenant... Long week end !!

    Donc effectivement au départ je ne voulais pas me prendre autant la tête et je voulais faire comme tu disais Jreaux sauf que j'ai essayé et ca ne peut pas marcher... Ou alors je ne comprend pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    var probamin = 1
    var probamax = 6
    var proba = probamax - probamin + 1 // = 6
    console.log("vous avez 1 chance sur " + proba + " de trouver le bon chiffre") // ici on aura bien "6" au tour 0
    Ok ici on est bon... Mais admettons que le joueur choisisse le chiffre 5 au 1er tour, on va donc modifier probamax avec ce chiffre et du coup on aura :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    var probamin = 1
    var probamax = 5
    var proba = probamax - probamin + 1 // = 5
    console.log("vous avez 1 chance sur " + proba + " de trouver le bon chiffre") // du coup on aura "5" alors que c'est faux ! il n'a plus qu'une chance sur 4, vu qu'on lui dit que 5 est trop grand il ne reste plus que le 1 le 2 le 3 et le 4
    Donc je vois pas comment faire avec ce simple calcul !!

    Sinon merci aux autres pour vos réponses, mais comme je l'ai dit dans mon message je suis encore débutant et je m'entraine sur des choses basique pour bien comprendre donc j'utilise ptet pas forcément bien les "let" ou "const" et encore moins le JQuery... J'utilise p'tet beaucoup trop de variable et je fais des choses qui prend 10 lignes... mais j'y vois plus clair comme ça !
    Au début j'étais effectivement sur un <form> mais pour une question purement esthétique je voulais de la simple div et du bouton pour avoir une sélection de chiffre un peu plus chouette =)

  11. #11
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Là, on est vraiment à la base de la base.......

    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
    "use strict"; // IMPORTANT : permet d'afficher TOUTES les erreurs (et donc de les CORRIGER)
    const choix = document.getElementById('choix'); // input
    const validation = document.getElementById('validation');
    const proba = document.getElementById('proba');
     
    var val_good = 4; // valeur à trouver
    var val_min = 1;
    var val_max = 6;
    var win = false;
     
    validation.addEventListener("click", function(){
       let val_choix = choix.value;
       if( val_choix < val_good ){
          val_min = val_choix;
          win = false;
       } else if( val_choix > val_good ){
          val_max = val_choix;
          win = false;
       } else {
          win = true;
       }
       // -----------
       // Affichage
       if( win )
       {
          console.log("Vous avez gagné !");
       } else {
          console.log("vous avez 1 chance sur " + (probamax - probamin + 1) + " de trouver le bon chiffre");
       }
       // -----------
    });

  12. #12
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 681
    Points : 5 221
    Points
    5 221
    Par défaut
    Oui... J'ai l'impression que tu mélanges encore un peut tout: "tableau", "let", "form", "JQuery"...
    Tout cela n'est pas du même ordre; je pense qu'il faut que tu revoies les interactions HTML / javascript, puis les objets et méthodes de base qu'on utilise pour calculer, modifier l'aspect d'une page, permettre à l'utilisateur d'agir sur la page...;

    bref, jette un œil quand même au rendu que je te propose, juste pour savoir si le tout est fonctionnel ou pas; après, on peu reparler code!

  13. #13
    Invité
    Invité(e)
    Par défaut
    @javatwister
    Si tu parles de ton code ici, il est trop "haut perché" !
    • Non seulement tu ne mets aucune explication,
    • Mais tu utilise des conditions ternaires imbriquées...

    Ça n'aide pas du tout à la compréhension de ton code...

  14. #14
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 681
    Points : 5 221
    Points
    5 221
    Par défaut
    J'entends bien. Le but était juste d'illustrer le projet avec une interface basique. C'est peut-être mettre la charrue avant les boeufs mais dans ce genre de jeux il y a toujours pas mal de contrôles à prendre en compte pour que le client soit guidé et ne fasse pas n'importe quoi.

  15. #15
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 681
    Points : 5 221
    Points
    5 221
    Par défaut
    D'ailleurs, mon code a encore beaucoup dégénéré quand j'ai commencé à réfléchir à la mise en pratique

    http://javatwist.imingo.net/plusmoins2.htm

  16. #16
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    191
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 191
    Points : 80
    Points
    80
    Par défaut
    Sur votre respect, je crois qu'on s'est vraiment pas très bien compris...

    Déjà je n'ai pas essayé les code précédents mais la j'ai quand même du essayé car je savais à quoi m'attendre... et le résultat n'est pas du tout celui que je veux !! je cherche à faire une probabilité sur "plus grand" et "plus petit"

    On va parler un peu logique pour commencer...

    Si je demande à une personne de trouver le chiffre auquel je pense est qui est entre 1 et 6 inclu, ca veut dire que la personne à 1 chance sur 6....
    je vais penser au chiffre 4 et il va me dire 3, je vais lui dire, Non le chiffre est trop petit !! il ne lui restera que 1 chance sur 3 de trouver, car c élimine automatiquement le 3 le 2 et le 1 !!

    La j'ai testé le code, et non non non non non et non c'est pas ca que je veux !! Outre le faite qu'il y a une erreur ligne 28 avec le nom des variables, là c'est pas du tout cas... le joueur a 6 chance et ca élimine a chaque tour une chance... La oui c'est pas très dur.... j'aurais pas eu besoin de poser une question pour faire cela... Ce que je demande est un chouilla plus complexe !!!

  17. #17
    Invité
    Invité(e)
    Par défaut
    Euhhh. Tu crois que tu vas nous apprendre le jeu du "plus grand, plus petit" ?

    Et en plus, on se fait eng.....ler.... ?

  18. #18
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    191
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 191
    Points : 80
    Points
    80
    Par défaut
    BA non je vous gronde pas roooo c'est juste que j'ai l'impression de ne pas avoir été compris !!

  19. #19
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 681
    Points : 5 221
    Points
    5 221
    Par défaut
    Citation Envoyé par d3LTa7 Voir le message
    BA non je vous gronde pas roooo c'est juste que j'ai l'impression de ne pas avoir été compris !!
    En fait, si, ça y est! en fin de compte, avec le camarade jreaux62, on a compris comment marche le plus ou moins! Et on est super content d'avoir appris tout ça; peu importe si tu n'as rien compris à ce qu'on te propose, nous ça nous a presque donné envie de ranimer ce jeu pour calculatrice

  20. #20
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 395
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 395
    Points : 15 756
    Points
    15 756
    Par défaut
    j'ai l'impression que d3LTa7 voulait calculer la probabilité après avoir fait plusieurs choix.
    si par exemple la 1re proposition 10 est trop grande, il reste 9 possibilités.
    mais ensuite si on propose 5 qui est trop petit, il reste seulement 4 possibilités, de 6 à 9.

    j'ai repris le code de javatwister et j'ai rajouté les lignes 55 à 59 :
    https://codesandbox.io/s/wizardly-banach-hy5er

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 0
    Dernier message: 19/03/2008, 10h36
  2. Calcul de probabilité
    Par Mr[ben] dans le forum Langage
    Réponses: 3
    Dernier message: 23/12/2007, 14h47
  3. [Débutant] Fonction de calcul de probabilité d'erreur pour un code Golay
    Par max-go dans le forum Signal
    Réponses: 2
    Dernier message: 17/11/2007, 15h04
  4. Calcul de probabilités
    Par rico3434 dans le forum Probabilités
    Réponses: 5
    Dernier message: 16/09/2006, 12h49
  5. algorithme pour calcul de probabilité
    Par filsdugrand dans le forum Algorithmes et structures de données
    Réponses: 9
    Dernier message: 14/12/2005, 14h11

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