Partage
  • Partager sur Facebook
  • Partager sur Twitter

Générer aléatoirement des équipes de 2

Sujet résolu
19 janvier 2021 à 23:09:02

Bonjour, je cherche à faire un programme en JavaScript (sur une interface web HTML) qui permet de faire des équipes de 2 avec les différents noms qu'a saisie l'utilisateur au part avant sauf que... une fois que chaque prénom est égal à une variable je ne sais plus quoi faire. Alors déjà j'ai esseyer d'attribué un nombre a chaque variable puis de dire des nombre aléatoire pour construire les équipes mais sais compliqué et je ne sais même pas si sa marche. J'ai esseyer avant de le coder en JavaScript de le faire en scratch mais là aussi je n'y arrive pas.

(Je sais que mon problème vient pas du codage mais des mathématiques mais j'ai que 14ans.)

Merci de m'avoir écoutée.

  • Partager sur Facebook
  • Partager sur Twitter
19 janvier 2021 à 23:31:00

Je pense que tu peux faire attribuer aléatoirement un nombre à l'uilisateur entre 0 et n (n étant le nombre max de personnes dans la game)

Ensuite tirer un nombre aléatoirement entre 0 et n 

Je ne m'y connais pas vraimetn en Javascript j'espere au moins que ça t'a aidé et je te rassure c'est très bien de commencer tot 

https://www.w3schools.com/js/js_random.asp

Cdt,

  • Partager sur Facebook
  • Partager sur Twitter
20 janvier 2021 à 3:00:50

Bonjour,

Pour partir sur l'idée de mysve, je pense à quelque chose comme celà, ça à l'air de fonctionner chez moi,

C'est un peu freestyle, il est tard :)

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>2+2</title>
    </head>
    <body>
        <script>
            function getRandomIntInclusive(min, max) {
                min = Math.ceil(min);
                max = Math.floor(max);
                return Math.floor(Math.random() * (max - min +1)) + min;
                }
            Joueurs=["a","b","c","d","e","f","g","h"]; /*regrouper les joueurs dans un tableau*/
            Tableau=[];/*ID: construire un tableau de taille 50%*/
            let nombre1=Joueurs.length;
            if(nombre1%2==0){ /*cas où le nombre de joueurs est pair*/
                var minimum=nombre1/2;
                var maximum=nombre1-1;
                for(let k=0;k<=((nombre1/2)-1);k++){
                            do{
                            var y=getRandomIntInclusive(minimum,maximum);
                            }while(Tableau.indexOf(Joueurs[y])!=-1);
                            Tableau.push(Joueurs[y]);/*remplir le 2e tableau*/
                            alert(Joueurs[k]+" jouera avec "+Joueurs[y]);
                        }
                    }
                    else{alert("rajoutez 1 joueur pour que tout le monde puisse jouer");}
        </script>
    </body>
</html>


https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/Math/random

https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/Math/floor

https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/Math/ceil

..

https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/Array

https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/Array/indexOf

  • Partager sur Facebook
  • Partager sur Twitter
20 janvier 2021 à 13:47:13

Merci énormement d'avoir pris le temps de répondre et de lire mais ca ne marche pas. j'ai esseyé de regroupé les élément dans un tableau, puis de tirer au hasard un chiffre que j'ai esseyer d'assimilé a chaque valeur du tableau(et même ca je sais pas trop comment faire), puis apres de suprimer l'élémnt dans le tableau pour pas que un nom soit citer 2 fois mais je n'y arrive pas et je pense pas que ça marche. Et je n'ai pas trouver le moynne de suprime un élément par son nom de variable.

Voici mon code JS:

function donnée(){


    var e1 = document.getElementById('e1').value;
    var e2 = document.getElementById('e2').value;
    var e3 = document.getElementById('e3').value;
    var e4 = document.getElementById('e4').value;
    var e5 = document.getElementById('e5').value;
    var e6 = document.getElementById('e6').value;
    var e7 = document.getElementById('e7').value;
    var e8 = document.getElementById('e8').value;
    var e9 = document.getElementById('e9').value;
    var e10 = document.getElementById('e10').value;
    var e11 = document.getElementById('e11').value;
    var e12 = document.getElementById('e12').value;
    var e13 = document.getElementById('e13').value;
    var e14 = document.getElementById('e14').value;
    var e15 = document.getElementById('e15').value;
    var e16 = document.getElementById('e16').value;

    max = 16;
    min = 0; 

    tableau=[e1 , e2 , e3 , e4 , e5 , e6 , e7 , e8 , e9 , e10 , e11 , e12 , e13 , e14 , e15 , e16]
    console.log(tableau);

    let tirage1 = Math.trunc(Math.random() * (max - min) + (min +1));

    if (tirage1=="1"){
        let groupe1=[e1]
    }
    
}

(Voici mon code html au cas ou.. :

<DOCTYPE html>
    <html>
        <head>
            <meta charset="utf-8"/>
            <link rel="stylesheet" href="style.css"/>
            <title>Calculer des binaumes</title>
        </head>
       
        <body>
           <h1 id="titre">Teste JavaScript</h1>
           <button onclick="nombreAleatoire()">test fonction random</button>
           <script src="scripts/main.js"></script>
            <p>
                Nom des élève: <br>
                <input type="text" class="1_0" id="e1" value='élève 1'>
                <input type="text" class="1_0" id="e2" value='élève 2'>
                <br>
                <input type="text" class="1_0" id="e3" value='élève 3'>
                <input type="text" class="1_0" id="e4" value='élève 4'>
                <br>
                <input type="text" class="1_0" id="e5" value='élève 5'>
                <input type="text" class="1_0" id="e6" value='élève 6'>
                <br>
                <input type="text" class="1_0" id="e7" value='élève 7'>
                <input type="text" class="1_0" id="e8" value='élève 8'>
                <br>
                <input type="text" class="1_0" id="e9" value='élève 9'>
                <input type="text" class="1_0" id="e10" value='élève 10'>
                <br>
                <input type="text" class="1_0" id="e11" value='élève 11'>
                <input type="text" class="1_0" id="e12" value='élève 12'>
                <br>
                <input type="text" class="1_0" id="e13" value='élève 13'>
                <input type="text" class="1_0" id="e14" value='élève 14'>
                <br>
                <input type="text" class="1_0" id="e15" value='élève 15'>
                <input type="text" class="1_0" id="e16" value='élève 16'>

            </p>
            <button onclick="donnée()">Calculer</button>

            
        </body>
    </html>
</DOCTYPE>

)


  • Partager sur Facebook
  • Partager sur Twitter
20 janvier 2021 à 20:12:32

Pour renvoyer un nombre entier aléatoire dans l'intervalle fermé [1,16],

essaie

Math.floor(Math.random() * (max - min +1)) + min; (https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/Math/random)

Toi, tu as essayé avec Math.trunc et ton +1 n'est pas dans la parenthèse.

Après je pense aussi que tu dois initialiser min à 1 et pas à 0 (il y à 17 entiers entre 0 et 16 et 16 entiers entre 1 et 16).

Tu devrais peut être réussir à affecter un numéro comme cela.

Pour ta méthode ensuite, peut être y a t-il trop de calculs à faire, c'est pour cela que tu dois peut être utiliser des boucles. Le programme que j'ai posté fonctionne chez moi.

Pour supprimer des élements, renseigne toi peut être sur la méthode splice (https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/Array/splice)
  • Partager sur Facebook
  • Partager sur Twitter