Rechercher : dans
Par :

Générer un nbre aléatoire en PHP

Dernière réponse le 29 jan 2002 à 00:32:02 Stéphane, le 27 jan 2002 à 17:38:39 
 Signaler ce message aux modérateurs

J'aimerais générer plusieurs nombres aléatoires différents (entiers positifs) en fonction du nombre d'entrés.

Ainsi, si j'ai x entrées, j'ai besoin de x nombres différents compris entre 1 et x.

Bref, si j'ai 4 entrées, je veux 1, 2, 3 et 4 mais dans un ordre aléatoire et pas 1, 1, 3 et 4 car il me faut des nombres différents.

Ca être possible?

Merci :-)

Meilleures réponses pour « Générer un nbre aléatoire en PHP » dans :
Générer des nombres aléatoires efficacement avec rand() VoirGénérer des nombres aléatoires efficacement avec rand() Vous avez peut-être remarqué qu'en C, en utilisant la fonction rand() de la bibliothèque standard, vous obtenez des résultats décevants, trop souvent les mêmes. Prenons un exemple, vous...
[PHP] Upload de fichiers VoirLe langage PHP permet de gérer des fichiers envoyés (uploadés) grâce à un formulaire HTML. Formulaire d'envoi de fichiers Configuration de PHP pour permettre l'upload Récupération du fichier avec PHP Formulaire d'envoi de fichiers La...
Générer et gérer des mots de passe VoirGénérer et gérer des mots de passe S'inscrire à des sites internet nécessite un mot de passe. Cela est d'ailleurs obligatoire pour les forums. Les mots de passe (césame dans la langue de Molière) sont également utilisés pour certains...
PHP - Génération d'images VoirPrérequis PHP permet de créer des images au format GIF à l'aide d'une librairie de fonctions prévue à cet effet. La librairie permettant de créer et manipuler des fichiers graphiques se nomme GD, ainsi, pour pouvoir utiliser ces fonctions il faut...

1

 PhP, le 29 jan 2002 à 00:32:02

Slt Stéphane,

Pour ton pb je génére un tableau de x entrées contenant la suite des nombre de 1 à x.
Ensuite je mélange les éléments du tableau en les échangeants x fois de façon pseudo aléatoire.

Car tirer au sort et tester à chaque fois qu'un nombre n'est pas déjà sorti serait trop fastidieux et réclamerait plus de temps (surtout pour les dernières valeurs !)

<?php
$tirage=array();

function rnd($x)
{
global $tirage;
for ($i=0; $i < $x; $i++) $tirage[$i]=$i+1;


srand((float) microtime()*1000000);

for ($i=0; $i < $x; $i++)
{
$rang=rand(1,$x-1);

// Swap
$dummy=$tirage[$rang];
$tirage[$rang]=$tirage[$i];
$tirage[$i]=$dummy;
}

}

?>

<html>
<head>
</head>

<body>
<?php
$x=20;
rnd(20);

for ($i=0; $i<$x; $i++) echo "tirage[".($i+1)."]=".strval($tirage[$i])."<br>\n";
?>
</body>
</html>

On doit pouvoir améliorer en passant le tableau en paramètre par ex.

Attention !!! : suivant la version de Php la syntaxe de la fonction
rand() change. Avec une version récente il faut écrire
rand (1,$x) et plus rand(1,$x-1) du moins je crois ... ;:-)


@+
Philippe

[[  The Truth is Out There   ]]

Répondre à PhP
Collection CommentÇaMarche.net