Répartition aléatoire [Résolu]

garfield26 10 Messages postés lundi 24 juillet 2006Date d'inscription 16 mars 2011 Dernière intervention - 2 juin 2008 à 00:35 - Dernière réponse : coucou747 12336 Messages postés mardi 10 février 2004Date d'inscription 30 juillet 2012 Dernière intervention
- 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 ^^
Afficher la suite 

Votre réponse

3 réponses

Meilleure réponse
coucou747 12336 Messages postés mardi 10 février 2004Date d'inscription 30 juillet 2012 Dernière intervention - 2 juin 2008 à 06:06
3
Merci
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);

Merci coucou747 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 90 internautes ce mois-ci

Commenter la réponse de coucou747
garfield26 10 Messages postés lundi 24 juillet 2006Date d'inscription 16 mars 2011 Dernière intervention - 2 juin 2008 à 16:33
0
Merci
Merci :)

cela marche parfaitement.

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

Merci.
Commenter la réponse de garfield26
coucou747 12336 Messages postés mardi 10 février 2004Date d'inscription 30 juillet 2012 Dernière intervention - 2 juin 2008 à 16:41
0
Merci
c'est juste une boucle qui parcourt tout les elements d'un tableau.
Commenter la réponse de coucou747

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.