Random

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Random

par Berzemus » 25 août 2008, 19:36

On peux même faire mieu :
$tab = array();
while ( count($tab) < 3 ) { // tant qu'on a pas récupèré 3 résultats
  if (!in_array(mt_rand(1, 10), $tab)) // si le tableau ne contient pas le chiffre tiré, on l'ajoute
    $tab[] = $nb;
}
print_r($tab);
Post inutile, je sais...
Pour moi c'est pas un post inutile.
C'est toujours mieux d'avoir mieux, non?
sauf que c'est mieux en rien.. il n'y a aucune différence de fonctionnement. On pourrait tout mettre sur une ligne aussi, et enlever tous les espaces blancs..

par neurostim » 25 août 2008, 19:12

On peux même faire mieu :
$tab = array();
while ( count($tab) < 3 ) { // tant qu'on a pas récupèré 3 résultats
  if (!in_array(mt_rand(1, 10), $tab)) // si le tableau ne contient pas le chiffre tiré, on l'ajoute
    $tab[] = $nb;
}
print_r($tab);
Post inutile, je sais...
Pour moi c'est pas un post inutile.
C'est toujours mieux d'avoir mieux, non?

par katagoto » 25 août 2008, 18:11

On peux même faire mieu :
$tab = array();
while ( count($tab) < 3 ) { // tant qu'on a pas récupèré 3 résultats
  if (!in_array(mt_rand(1, 10), $tab)) // si le tableau ne contient pas le chiffre tiré, on l'ajoute
    $tab[] = $nb;
}
print_r($tab);
Post inutile, je sais...

par Ryle » 25 août 2008, 17:41

Et histoire d'éviter une quantité de if() et de while() à chaque fois que tu veux tirer un nouveau chiffre :
$tab = array();
while ( count($tab) < 3 ) { // tant qu'on a pas récupèré 3 résultats
  $nb = mt_rand(1, 10); 
  if (!in_array($nb, $tab)) // si le tableau ne contient pas le chiffre tiré, on l'ajoute
    $tab[] = $nb;
}
print_r($tab);

par Arno76 » 25 août 2008, 16:47

Merci a vous ;)

par neurostim » 25 août 2008, 16:12

if ($un == $deux)     
{
     $deux = rand(1,10);
}


Ca ne va pas aller.
Il faut une boucle.
 $un = mt_rand(1, 10);
 $deux = mt_rand(1, 10);
do { 
  $deux = mt_rand(1, 10);
} while ($un == $deux);

par Berzemus » 25 août 2008, 16:09

Comme ça, en l'air, une idée, mais à voir si c'est viable ou pas...
$arr = new array(1,...10);

function randy(&$arr)
    {
    if (empty($arr)) die ('Thu!');
    $r = mt_rand(0,count($arr));
    $return = $arr[$r];
    array_splice($arr,$r,1);
    return $return;
    }
L'idée est d'avoir un tableau avec les valeurs possibles. A chaque demande d'un nombre aléatoire (par randy()), on choisit une valeur au hasard, et on l'efface du tableau. Du coup, on est sur de ne plus le revoir avant de recharger le script.. (mais du coup, on ne doit pas l'appeler plus de fois qu'il n'y a de valeurs possibles)

par Arno76 » 25 août 2008, 15:55

Bonjour,

Je pensai a quelque chose comme ça mes je me demandai si il exister pas quelque chose de plus simple.
$un = rand(1,10);
		
$deux = rand(1,10);
		
if ($un == $deux) 	
{
     $deux = rand(1,10);
}	
Le problème est qu'il peut me ressortir aussi la même valeur donc en fessant sa avec plusieurs numéro ca fait beaucoup de vérification.... :D

par guilt92 » 25 août 2008, 15:50

Et qu as tu tenté jusque la ?

A moins que tu veuille un code tout fait... :(

Perso je te donne une piste mais il faudra la traduire en code...

Il faudrait faire quelque chose du style :

Code : Tout sélectionner

nombre1 = random nombre2 = nombre1 tantque(nombre2==nombre1) nombre2=random
et ainsi de suite...

Random

par Arno76 » 25 août 2008, 15:44

Bonjour,

Je souhaiterai faire un random jusque la pas de problème... :D

$un = rand(1,10);
$deux = rand(1,10)
$trois = rand(1,10);

Je voudrais que si numéro est déjà sorti qu'il ne ressorte pas dans le random suivant.

Merci pour votre aide ;)