Bonsoir,
Je cherche à générer 7 variables, toutes différentes.
Les boucles que j'ai faites fonctionnent et me donnent bien un chiffre aléatoire pour chaque variable, mais mes conditions d'exclusivité ont l'air transparentes.
Si quelqu'un pouvait aider un pauvre petit débutant sans expérience…
Merci

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
    <title><!-- Insert your title here --></title>
</head>
<body>
<script type="text/javascript" language="JavaScript">     
var nImg1 = Math.round((Math.random()*32)+1);
var nImg2 = Math.round((Math.random()*32)+1);
        while (nImg2 == nImg1)
        {
        var nImg2 = Math.round((Math.random()*32)+1);
        }

var nImg3 = Math.round((Math.random()*32)+1);
        while (nImg3 == nImg1 && nImg3 == nImg2 && nImg3 == nImg4 && nImg3 == nImg5 && nImg3 == nImg6 && nImg3 == nImg7)
        {
        var nImg3 = Math.round((Math.random()*32)+1);
        }

var nImg4 = Math.round((Math.random()*32)+1);
        while (nImg4 == nImg1 && nImg4 == nImg2 && nImg4 == nImg3 && nImg4 == nImg5 && nImg4 == nImg6 && nImg4 == nImg7)
        {
        var nImg4 = Math.round((Math.random()*32)+1);
        }

var nImg5 = Math.round((Math.random()*32)+1);
        while (nImg5 == nImg1 && nImg5 == nImg2 && nImg5 == nImg3 && nImg5 == nImg4 && nImg5 == nImg6 && nImg5 == nImg7)
        {
        var nImg5 = Math.round((Math.random()*32)+1);
        }

var nImg6 = Math.round((Math.random()*32)+1);
        while (nImg6 == nImg1 && nImg6 == nImg2 && nImg6 == nImg3 && nImg6 == nImg4 && nImg6 == nImg5 && nImg6 == nImg7)
        {
        var nImg6 = Math.round((Math.random()*32)+1);
        }

var nImg7 = Math.round((Math.random()*32)+1);
        while (nImg7 == nImg1 && nImg7 == nImg2 && nImg7 == nImg3 && nImg7 == nImg4 && nImg7 == nImg5 && nImg7 == nImg6)
        {
        var nImg7 = Math.round((Math.random()*32)+1);
        }

</script>

 <table width="1024" border="1" cellpadding="0" cellspacing="0" class="style1">
    <tr>
      <td width="180" height="240"><script type="text/javascript" language="JavaScript">

{
    document.write('<img src="pages/images/'+ nImg1 + '.jpg" />');
}
    </script></td>
      <td width="180" height="240"><script type="text/javascript" language="JavaScript">
{
    document.write('<img src="pages/images/'+ nImg2 + '.jpg" />');
}
    </script></td>
      <td width="180" height="240"><script type="text/javascript" language="JavaScript">
{
    document.write('<img src="pages/images/'+ nImg3 + '.jpg" />');
}
    </script></td>
      <td width="180" height="240"><script type="text/javascript" language="JavaScript">
{
    document.write('<img src="pages/images/'+ nImg4 + '.jpg" />');
}
    </script></td>
      <td width="180" height="240"><script type="text/javascript" language="JavaScript">
{
    document.write('<img src="pages/images/'+ nImg5 + '.jpg" />');
}
    </script></td>
      <td width="180" height="240"><script type="text/javascript" language="JavaScript">
{
    document.write('<img src="pages/images/'+ nImg6 + '.jpg" />');
}
    </script></td>
      <td height="240"><script type="text/javascript" language="JavaScript">
{
    document.write('<img src="pages/images/'+ nImg7 + '.jpg" />');
}
    </script></td>
    </tr>
  </table></body>
</html>

8 réponses


hatfab
Auteur
Réponse acceptée

Bonsoir, Eh bien je vois que cela n'inspire personne, du coup ça me rassure sur le fait que je ne parviens pas à m'en sortir tout seul, ça doit être bien compliqué à résoudre. Je vais bien finir par y arriver !
En tout cas merci pour les autres posts.

Hello, essaye ceci :

<script type="text/javascript">
    function randString() {
        var chiffres = "0123456789";
        var randNum;
        var randStr = "";
        var useList;
        for (var i = 1; i <= 7; i++)
        {
            useList = chiffres;
            randNum = Math.floor(Math.random() * useList.length);
            randStr = randStr + useList.charAt(randNum);
        }
        return randStr;
    }
    for (var i = 1; i <= 7; i++) {
        document.write(randString() + '<br/>');
    }
</script>

?? ;)

randString() : Retourne 7 chiffre différents (ex: 3259613)

Ou alors je n'ai pas compris ce que tu veux ^^

hatfab
Auteur

Bonsoir,
Effectivement je me suis mal exprimé. Ce que je cherche à faire c'est générer 7 chiffres aléatoirement, tous différents, compris entre 1 et 33, et stockées dans 7 variables. La finalité étant d'afficher 7 images puisées au hasard dans un répertoire qui en contient 33.
Voilà, j'espère que je suis plus clair…
Merci

Ha ok... Alors je pense que Math.round(Math.random()*33) suffit. :]

<script type="text/javascript">
for (var i = 1; i <= 7; i++) {
    var counter = Math.round(Math.random()*33);
    document.write(
        '<td width="180" height="240">' +
        '<img src="pages/images/' + counter + '.jpg" />' +
        '</td>'
    );
}
</script>
hatfab
Auteur

Super merci, ça marche très bien ; tu fais en 10 lignes ce qui m'en prenait 91 !
Maintenant ce que je ne parviens pas à faire c'est faire en sorte de ne pas avoir de doublon, autrement dit que les 7 nombres soient tous différent…

Hello, test ça : [code]<script type="text/javascript">
var counts = new Array();
for (var i = 0; i <= 6; i++) {
var counter = Math.round(Math.random() 33);
counts = counter;
if (!isin(counter, counts)) {
document.write(counter + ': Ok<br/>');
} else {
document.write(counter + ': No<br/>');
}
}

document.write('<hr/>' + counts);

function isin(value, array) {
for (var checkValue = 0; checkValue < array.length - 1; checkValue++) {
if (array[checkValue] == value) return true;
}
return false;
}
</script>[/code] Il écrit => **chiffre: Ok** quand **counter** n'est pas dans **counts** (count = un tableau contenant tous les **counter** (chiffres)) et **chiffre: No** quand **counter** est déjà dans le tableau **counts** Du coup, à toi d'adapter (ça va être casse tête :D) ^^ Voilà, bonne chance ;)

hatfab
Auteur

Ok. je vais essayer de m'en sortir avec ça. Si je comprends bien il ne me reste plus qu'à trouver comment attribuer les résultats "Ok" à mes 7 variables. Je reviendrais pour dire si je m'en suis sortie.
Merci beaucoup…

hatfab
Auteur

Bonsoir,
Après maintes recherches et et maintes tentatives, je ne comprends toujours pas comment faire pour ne pas renseigner un indice de mon tableau, si celui-ci contient déjà une variable de même valeur. Je m'explique :

le conter aléatoire sort le 17 -> i0 = 17
le conter aléatoire sort le 23 -> i1 = 23
le conter aléatoire sort le 12 -> i3 = 12
le conter aléatoire re-sort le 17 -> i4 = ?
là, comme i4 == i0, il ne devrait pas être insérer dans mon tableau mais au contraire, on devrait relancer le tirage aléatoire jusqu'à ce que le chiffre soit unique dans le tableau
…et ça, bah j'sais pô faire.

Merci à PhiSyx qui a commencé le boulot, et à ceux qui pourraient m'aider.