Page 1 sur 1
PHP5 : 4 nombres aleatoires et differents
Posté : 28 févr. 2010, 22:56
par jehanon
Bonjour
Connaissez vous une méthode astucieuse pour tirer 4 nombres aléatoires de 1 à 100 et tous différents ?
merci
Re: PHP5 : 4 nombres aleatoires et differents
Posté : 28 févr. 2010, 23:20
par Dr@ke
Re: PHP5 : 4 nombres aleatoires et differents
Posté : 28 févr. 2010, 23:23
par jehanon
rand tire des nombres aléatoires mais il peut très bien tirer 4,12,4,26 , j'en cherche 4 différents
Re: PHP5 : 4 nombres aleatoires et differents
Posté : 28 févr. 2010, 23:25
par Dr@ke
Bien suffit de paramétrer des intervalles différents, ou de vérifier le résultat ensuite, et donc de relancer un rand() si nécessaire ou ajouter un chiffre...
Re: PHP5 : 4 nombres aleatoires et differents
Posté : 28 févr. 2010, 23:36
par Dr@ke
Exemple sur
php.net:
<?php
$rand = array();
while (count($rand) < $total ) {
$r = mt_rand($min,$max);
if ( !in_array($r,$rand) ) {
$rand[] = $r;
}
}
?>
Ou:
<?php
function uniqueRand($n, $min = 0, $max = null)
{
if($max === null)
$max = getrandmax();
$array = range($min, $max);
$return = array();
$keys = array_rand($array, $n);
foreach($keys as $key)
$return[] = $array[$key];
return $return;
}
?>
...
Re: PHP5 : 4 nombres aleatoires et differents
Posté : 28 févr. 2010, 23:38
par jehanon
merci
Re: PHP5 : 4 nombres aleatoires et differents
Posté : 01 mars 2010, 02:54
par AB
A noter que l'utilisation des deux fonctions données par Dr@ke doivent être employées suivant le contexte et pas indifféremment :
La première méthode est particulièrement efficace pour retourner un petit nombre de valeurs uniques dans un intervalle assez grand.
Grosso modo on peut l'employer sans souci si le nombre de valeur à retourner est ~ inférieure à 10% de l'intervalle ex : retourner 10 valeurs uniques entre 0 et 100.
Par contre cette méthode peut devenir très lente si le nombre de valeurs à retourner s'approche de l'intervalle ex : retourner 90 valeurs uniques en 0 et 100.
Dans ce cas la seconde méthode est particulièrement appropriée. Mais cette seconde méthode possède néanmoins l'inconvénient de ne pas pouvoir être utilisée (ou sera très très lente et gourmande en ressource) sur de très gros intervalles puisque l'on crée avec la fonction range un tableau de la taille de l'intervalle. Eviter donc de dépasser 1000 éléments pour le tableau (soit par exemple un intervalle de 0 à 1000) avec cette seconde méthode.
Re: PHP5 : 4 nombres aleatoires et differents
Posté : 01 mars 2010, 08:07
par jehanon
merci pour ce complément d'informations, j'ai utilisé la 1 mais directement dans une fonction
comment fait on pour récupérer un array que retourne une fonction ?
Code : Tout sélectionner
function RandArray () {
$unArray[] = .....
...... return $unArray;
}
si je veux l'utiliser dans une autre fonction ?
ce dernier code ne marche pas
merci
Re: PHP5 : 4 nombres aleatoires et differents
Posté : 01 mars 2010, 16:38
par Calimero
Pour accéder à des éléments du tableau (
[...] ) , il faut passer par une variable :
$tableau = MaFonctionQuiRetourneUnTableau($param1,$param2);
echo $tableau['cle'];
Re: PHP5 : 4 nombres aleatoires et differents
Posté : 01 mars 2010, 16:46
par jehanon
ok il faut affecter le tableau à une variable qui devient le tableau
merci
Re: PHP5 : 4 nombres aleatoires et differents
Posté : 01 mars 2010, 18:53
par AB
Tu pourrais aussi déclarer ton tableau "global", mais ce n'est pas recommandé tant qu'on peut faire facilement autrement.
Re: PHP5 : 4 nombres aleatoires et differents
Posté : 01 mars 2010, 18:57
par jehanon
oui je vais me simplifier la vie quoique j'aime bien ces déclarations plus explicites venant de .net
merci