Générer un nbre aléatoire en PHP
Fermé
Stéphane
-
27 janv. 2002 à 17:38
PhP Messages postés 1770 Date d'inscription lundi 11 décembre 2000 Statut Membre Dernière intervention 23 décembre 2009 - 29 janv. 2002 à 00:32
PhP Messages postés 1770 Date d'inscription lundi 11 décembre 2000 Statut Membre Dernière intervention 23 décembre 2009 - 29 janv. 2002 à 00:32
A voir également:
- Générer un nbre aléatoire en PHP
- Comment générer un qr code - Guide
- Generer mot de passe - Télécharger - Sécurité
- Easy php - Télécharger - Divers Web & Internet
- Php natif - Forum PHP
- Tirage au sort excel aléatoire sans doublon - Forum LibreOffice / OpenOffice
1 réponse
PhP
Messages postés
1770
Date d'inscription
lundi 11 décembre 2000
Statut
Membre
Dernière intervention
23 décembre 2009
606
29 janv. 2002 à 00:32
29 janv. 2002 à 00:32
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 ]]
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 ]]