Répartition aléatoire [Résolu]

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

Votre réponse

3 réponses

Meilleure réponse
Messages postés
12336
Date d'inscription
mardi 10 février 2004
Dernière intervention
30 juillet 2012
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

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 100 internautes ce mois-ci

Commenter la réponse de coucou747
Messages postés
10
Date d'inscription
lundi 24 juillet 2006
Dernière intervention
16 mars 2011
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
Messages postés
12336
Date d'inscription
mardi 10 février 2004
Dernière intervention
30 juillet 2012
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.