TABLEAU DE NOMBRES ENTIERS ALÉATOIRES, TOUS DIFFÉRENTS OU NON, COMPRIS OU NON DA

Messages postés
389
Date d'inscription
lundi 7 juillet 2003
Statut
Webmaster
Dernière intervention
10 février 2009
- - Dernière réponse : BreakingCentral
Messages postés
11
Date d'inscription
mercredi 14 mars 2007
Statut
Membre
Dernière intervention
9 avril 2007
- 9 avril 2007 à 02:25
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/42101-tableau-de-nombres-entiers-aleatoires-tous-differents-ou-non-compris-ou-non-dans-un-intervalle

Afficher la suite 
BreakingCentral
Messages postés
11
Date d'inscription
mercredi 14 mars 2007
Statut
Membre
Dernière intervention
9 avril 2007
-
Aussi :)

Par contre, j'ai supprimé $use_range, mais ça marche pas, il reste le salaud xD
FhX
Messages postés
2350
Date d'inscription
mercredi 13 octobre 2004
Statut
Membre
Dernière intervention
18 avril 2015
3 -
# function get_random_integer( $user_range, $from, $to)
# {
# $from = (int) $from;
# $to = (int) $to;
# if ($use_range) $n = mt_rand( $from, $to);
# else $n = mt_rand();
#
# return $n;
# }

function get_random_integer( $from, $to, $use_range = true) {
return $use_range ? mt_rand( (int) $from, (int) $to ) : mt_rand();
}


# function get_random_integer_mode( $exclusive, $array, $from, $to)
# {
# do
# {
# $n = get_random_integer( TRUE, $from, $to);
# }
# while ( (in_array( $n, $array)) && ($exclusive));
#
# return $n;
# }
=>
function get_random_integer_mode(&$array, $from, $to, $exclusive=true) {
do {
$n = get_random_integer($from, $to);
} while ( $exclusive && in_array( $n, $array) );
$array[] = $n;
}

# while (!isset( $songs_list[ $nb_keys]))
# $songs_list[] = get_random_integer_mode( TRUE, $songs_list, 1, $nb_songs);
=>
for ($i=0; $i<$nb_keys; $i++)
get_random_integer_mode(&$array, 1, $nb_songs);

Au mieux :)

Mais je comprend pas trop ce code...
Si je veux faire une playlist en random, je fais plutot :

<?php
//Init
$array = array();
$max_songs = 10;

// Remplissage du tableau
for ($i=0; $i<$max_songs; $i++)
$array[$i] = $i+1;

// Mélange du tableau
shuffle($array);

// Affichage
foreach($array as $key=>$val)
echo $key.' => '.$val.'
';

Et pis c'est tout :)
BreakingCentral
Messages postés
11
Date d'inscription
mercredi 14 mars 2007
Statut
Membre
Dernière intervention
9 avril 2007
-
C'est pas faux :D
Je viens de rectifier ça ^^
cs_garfield90
Messages postés
389
Date d'inscription
lundi 7 juillet 2003
Statut
Webmaster
Dernière intervention
10 février 2009
-
oki, mais tu peux supprimer use_range car tu l'utilise si et seulement si from et to sont renseignés et différent

en gros
si ( $from >= 0 && $to >=0 && $from!=$to )
generer_aleatoire($from, $to)
sinon
generer_aletoire();

ca ne sert a rien de renseigner use_range a false et from/to en meme temps
BreakingCentral
Messages postés
11
Date d'inscription
mercredi 14 mars 2007
Statut
Membre
Dernière intervention
9 avril 2007
-
J'ai testé cette nouvelle version et ça marche.
J'ai remplacé l'ancienne par celle-là dans la source.