Répartition aléatoire

Résolu
garfield26 Messages postés 10 Date d'inscription lundi 24 juillet 2006 Statut Membre Dernière intervention 16 mars 2011 - 2 juin 2008 à 00:35
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 - 2 juin 2008 à 16:41
Bonjour,

je souhaite faire une répartition aléatoire "maitrisé".

J'ai 100 cases (un tableau de 10 par 10) et je veux répartir 5 types de ressources.

je souhaite avoir 20% de la ressource 1, 15% de la 2, 35% de la 3, 9% de la 4 et donc 21 de la 5éme; tout cela réparti aléatoirement sur les 100 dispo.

et la ce soir je séche complet :)

si vous avez une petite idée je suis preneur. (ou un lien, topics,..)

Merci ^^

3 réponses

coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
2 juin 2008 à 06:06
salut

t'as deux methodes : la premiere, tu fais des array_fill, des array_join et un melange du tableau obtennu...

la seconde est assez fine, et en O(1)

// je souhaite avoir 20 de la ressource 1, 15 de la 2, 35 de la 3, 9 de la 4 et donc 21 de la 5éme; tout cela réparti aléatoirement sur les 100 dispo.

$dispo = array(0, 20, 15, 35, 9, 21);

$tab = array(0, 0, 0, 0, 0, 0);

for ($i = 0 ; $i<100; $i++){
$a=mt_rand(0, 99 - $i);
$somme = 0;
foreach ($dispo as $in=>$d){
$somme += $d;
if ($a < $somme ){
$dispo[$in]--;
$choisi = $in; break;
}
}
echo $choisi.' ';
$tab[$choisi]++; // verification
}

print_r($tab);
3
garfield26 Messages postés 10 Date d'inscription lundi 24 juillet 2006 Statut Membre Dernière intervention 16 mars 2011
2 juin 2008 à 16:33
Merci :)

cela marche parfaitement.

j'ai un peu de mal avec le fonctionnement de ton foreach. si tu pouvais m'éclairer ^^

Merci.
0
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
2 juin 2008 à 16:41
c'est juste une boucle qui parcourt tout les elements d'un tableau.
0
Rejoignez-nous