PHP et mt_rand

  • Auteur de la discussion Auteur de la discussion Misaki
  • Date de début Date de début
WRInaute discret
Bonjour,

J'ais une question un peu noob mais bon :p

J'utilise mt_rand pour avoir un chiffre aléatoire entre 1 et 100 par exemple :

$var=mt_rand(1,100);

Bon .... maintenant j'aimerais tirer 5 chiffres aléatoire entre 1 et 100 , mais ne jamais avoir 2 fois le même chiffre , je n'y arrive pas ...

exemple :

$var1=28;
$var2=10;
$var3=99;
$var4=25;
$var5=68;

j'ais essayé de faire ca avec do while {} ... avec un tableau ... bref je crois que je m'enbarque dans un truc compliqué alors que ca dois être tres simple :oops:

Si quelqu'un avais un bout de code sous le coude :p je suis sur que un de vous utilise ca sur un de vos sites :p

Merci
 
WRInaute occasionnel
Tu genere un nombre, ensuite tu en genere un deuxieme si deuxieme == premier alors tu le regenere, si deuxieme != premier tu genere le troisieme , si le troisieme == premier OR deuxieme tu regenere ...

Si certains on mieux :P
 
WRInaute discret
Salut

C'est ce que je voulais faire mais c est un peu lourd de faire une boucle à chaque chiffre oO
 
WRInaute occasionnel
Tu crées un tableau qui contient tous les chiffres de ton intervalle de tirages.
Tu tire au hasard dans le tableau, en supprimant la "cellule" à chaque fois.

De cette façon, tu n'aura pas besoin de faire de boucle.
 
WRInaute discret
C'est pas bien compliqué avec un while :
Code:
<?php
$rand_numbers = array();
$rand_numbers_length = 0;
$i = 0;
while ( $rand_numbers_length != 5 )
{
    $i = mt_rand(1, 100);
    if ( !in_array($i, $rand_numbers) )
    {
        $rand_numbers[] = $i;
        $rand_numbers_length++;
    }
}
print_r($rand_numbers);
?>
 
WRInaute discret
Sans boucle :

Code:
<?php
// Nombre entre 1 et 100 unique.

// Créer un tableau avec les valeurs allant de 1 à 100
$a=range(1,100);
// Les ranger de façon aléatoire
shuffle($a);
// Extraire les 2 premiéres valeurs par exemple
// Ils seront aléatoire et unique
$rand1=$a[0];
$rand2=$a[1];

echo '<pre>';
print_r($rand1);
echo '<br>';
print_r($rand2);
echo '</pre>';

?>
 

➡️ Offre MyRankingMetrics ⬅️

pré-audit SEO gratuit avec RM Tech (+ avis d'expert)
coaching offert aux clients (avec Olivier Duffez ou Fabien Faceries)

Voir les détails ici

coaching SEO
Discussions similaires
Haut