Probleme fonction rand()

SalihLeChat Messages postés 16 Date d'inscription vendredi 1 décembre 2006 Statut Membre Dernière intervention 19 juin 2009 - 8 juin 2009 à 14:27
SalihLeChat Messages postés 16 Date d'inscription vendredi 1 décembre 2006 Statut Membre Dernière intervention 19 juin 2009 - 19 juin 2009 à 00:21
Bonjour,

J'aimerais pouvoir choisir un random dans une liste sans me répéter.
 Je m explique, en fait je dois programmer le jeu "Le compte est bon" , et j aimerais faire un random dans une liste. En fait je dois choisir 6 termes parmis (1-10 1-10 25 50 75 100). N'est il pas possible d'éviter de passer par un tableau et entrer directement ces valeurs en paramètre d'entrée de la fonction rand() ?

Merci de vos réponses.

13 réponses

psyckan Messages postés 135 Date d'inscription vendredi 27 août 2004 Statut Membre Dernière intervention 8 mai 2010
9 juin 2009 à 02:34
Pas à ma connaisance, mais c'est pas bien dur de la créer cette fonction en passant justement par un tableau
0
SalihLeChat Messages postés 16 Date d'inscription vendredi 1 décembre 2006 Statut Membre Dernière intervention 19 juin 2009
9 juin 2009 à 03:09
Héhé je vais devoir baragouiner dans le tableau tout un tas de test pour pas avoir de doublons ! Merci quand meme de ton post =)
0
psyckan Messages postés 135 Date d'inscription vendredi 27 août 2004 Statut Membre Dernière intervention 8 mai 2010
9 juin 2009 à 03:13
Y'a un truc que j'ai pas bien compris par contre c'est le '1-10 1-10' dans ta liste de valeur ?
0
SalihLeChat Messages postés 16 Date d'inscription vendredi 1 décembre 2006 Statut Membre Dernière intervention 19 juin 2009
9 juin 2009 à 16:41
Hmmm pour etre plus clair imagine 24 plaques métalliques (principe de l'émission il y a quelques années) :
1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10 25 50 75 100 ; parmi ces 24 tu dois faire un tirage de 6 nombres.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
psyckan Messages postés 135 Date d'inscription vendredi 27 août 2004 Statut Membre Dernière intervention 8 mai 2010
9 juin 2009 à 18:38
<?php
$tab = array('1','2','3','4','5','6','7','8','9','10','1','2','3','4','5','6','7','8','9','10','25','50','75','100');
$indice = array();
$i=0;

while($i<6){
$n=rand(0,23);
if(!in_array($n,$indice)){
    print($tab[$n]."
");
    $i++;
}
array_unshift($indice,$n);
}
?>
0
SalihLeChat Messages postés 16 Date d'inscription vendredi 1 décembre 2006 Statut Membre Dernière intervention 19 juin 2009
9 juin 2009 à 20:57
Haaa franchement merci beaucoup de ton investissement ca va beaucoup me servir.

Juste, si un 1 est déja présent dans le 2ième tableau "indice" la boucle if nous empechera pas d en reprendre un 2ième?
Et aussi est tu sur que la fonction "array_unshift" sorte l'élément selectionné ? Et non pas le dernier élément ?

Merciiiiiiiiiiiii
0
psyckan Messages postés 135 Date d'inscription vendredi 27 août 2004 Statut Membre Dernière intervention 8 mai 2010
9 juin 2009 à 21:45
1) Non les deux 1 peuvent sortir car ils se trouve dans un cellule différente

example :

1 - $n=10 (le tableau 'indice étant vide') on affiche donc la valeur qui correspond à la cellule 10 du tableau $tab
Soit 1
On place 10 dans le tableau 'indice'

2- $n=10 (10 se trouve dans le tableau 'indice') -> on passe au suivant

3 - $n=0 (0 ne se trouve pas dans le tableau 'indice')on affiche donc la valeur qui correspond à la cellule 0 du tableau $tab
Soit 1

[...]

Les deux 1 sont sortis

2) la fonction array_unshift sert juste a mettre des élément dans un tableau ici, on aurrait tout aussi bien pu utiliser array_push

>http://uk3.php.net/array_push
>http://uk3.php.net/array_unshift
0
SalihLeChat Messages postés 16 Date d'inscription vendredi 1 décembre 2006 Statut Membre Dernière intervention 19 juin 2009
10 juin 2009 à 06:34
Effectivement j avais pas remarqué que ca se jouais sur les indices! D ou le nom... Lol.

 Je te remercie vraiment énormément tu ma sorti d un dilemme ! J ai trouvé différentes solutions, avec des tableaux et des pointeurs, mais celle ci est vraiment beaucoup plus simple et facile a comprendre.

 Merci encore peut etre a plus tard =)
0
SalihLeChat Messages postés 16 Date d'inscription vendredi 1 décembre 2006 Statut Membre Dernière intervention 19 juin 2009
18 juin 2009 à 13:39
Re coucou Psyckan t es toujours dans le coin ? J ai encore besoin d un petit coup de main :>
0
psyckan Messages postés 135 Date d'inscription vendredi 27 août 2004 Statut Membre Dernière intervention 8 mai 2010
18 juin 2009 à 19:01
J'écoute
0
SalihLeChat Messages postés 16 Date d'inscription vendredi 1 décembre 2006 Statut Membre Dernière intervention 19 juin 2009
18 juin 2009 à 21:46
Héhé toujours à l'affut ! Merci serieux ta première petite fonction ma bien servi. Mais en fait je t expliques, j'ai donc 6 liste déroulante pour mon jeu (le compte est bon) et j'aimerais qu'en cliquant sur un bouton aléatoire, les 6 listes prennent des valeurs aléatoires choisies.
Ex : ma 1ere liste :

<form action="" name="form" method="post">
<select name="liste1">
<option label="test" value="1"  selected="selected">1</option>
  <option label="test" value="2">2</option>
  <option label="test" value="3">3</option>
  <option label="test" value="4">4</option>
  <option label="test" value="5">5</option>
  <option label="test" value="6">6</option>
  <option label="test" value="7">7</option>
  <option label="test" value="8">8</option>
  <option label="test" value="9">9</option>
  <option label="test" value="10">10</option>
  <option label="test" value="25">25</option>
  <option label="test" value="75">75</option>
  <option label="test" value="100">100</option>
</select>

J ai compris en surfant un peu que c est la valeur du select qu il faut réussir a changer. Mais je ne sais pas comment la faire changer en cliquant sur un bouton Input. De plus je dois éviter les répétitions et utiliser donc le petit générateur que tu ma coder. J espere etre assez clair

Merciii
0
psyckan Messages postés 135 Date d'inscription vendredi 27 août 2004 Statut Membre Dernière intervention 8 mai 2010
18 juin 2009 à 23:23
En esperant que c'est ce que tu voulais. Tiens moi au courant si tu il y a quelque chose que tu ne comprend pas.

<form action="jeu.php" name='form' method='post'>
<?php
$tab = array('1','2','3','4','5','6','7','8','9','10','1','2','3','4','5','6','7','8','9','10','25','50','75','100');
$indice = array();
$i=0;

while($i<6){
$n=rand(0,23);
if(!in_array($n,$indice)){
    echo "
        <select name='liste1'>";
        foreach($tab as $value){
            if($value == $tab[$n])
                echo "<option label='test' value='".$value."' selected='selected'>".$value."</option>";
            else
                echo "<option label='test' value='".$value."'>".$value."</option>";
        }
    echo "
        </select>
    ";
    $i++;
}
array_unshift($indice,$n);
}
?>

</form>    
0
SalihLeChat Messages postés 16 Date d'inscription vendredi 1 décembre 2006 Statut Membre Dernière intervention 19 juin 2009
19 juin 2009 à 00:21
Haaa j ai répondu mais pas ca c est pas afficher Oo?

Bon c est pas grave, je te disais donc un grand merci d abord t imagines pas de quelle galère tu me sors!
Simple problème en cliquant sur Play! Ca me sort un message d erreur, et j aimerais qu en cliquant sur ce bouton ca génere un nouveau tirage aléatoire ! De plus la liste 1-10 est en double dans la liste mais bon ca c est vraiment pas important. Par contre j ai plus qu'une liste liste1 ? Pour récupérer les 6 données différemment ca rique de poser probleme ? enfin bref...
De toute facon merci je pense avoir compris l idée générale je vais essayé de bidouiller. Serieux merci !!!
0
Rejoignez-nous