JeuWeb - Crée ton jeu par navigateur

Version complète : Tirage Aléatoire avec ponderation en %age
Vous consultez actuellement la version basse qualité d’un document. Voir la version complète avec le bon formatage.
Pages : 1 2
c'est bizarre, même si je suis dans une démarche assez proche de la 3 comme tout le monde finalement, j'inverserais les clefs et les valeurs et je ne traiterais qu'un tableau

en reprenant le code de Roworll

// Définition du tableau
// La valeur de chaque entrée représente son poids
$Val=array(
'resultat 1' => 20,
'resultat 2' => 30,
'resultat 3' => 10,
'resultat 4' => 60
);


// tirage aléatoire basé sur le total des poids
$rnd=mt_rand(1,array_sum($Val));

$sum=0;
foreach ($Val as $result => $chance)
{
$sum += $chance;
if ($rnd <= $sum)
break;
}

//Affichage du résultat
echo 'résultat ('.$rnd.') : '.$result;
Au final j'ai fais la chose équivalante à Roworll.
Par contre c'est vrai que je pourais optimiser en metant les ponderations en indice, ça me ferait des manip en moins pour récup le resultat !

Sinon j'aime bien l'autre optimisation que tu fais Ter Rowan, a mon avis c'est un peu plus rapide que ce que j'avais implémenté, à tester...
l'idée d'utiliser le foreach pour récup la clé sans passé par des array_keys ou autre est pas mal en fait ^^
Ça dépends de ce que tu stockes dans ton tableau.
Dans un cas simple effectivement, utiliser le contenu en tant que clé et le poids en tant que valeur permet d'optimiser un poil.
Pour stocker des choses plus complexes (objets, sous tableaux), soit tu travailles avec un couple clé/objet dans un seul tableau, soit avec deux tableaux distincts (un pour les poids l'autre pour les valeurs/objets)
Pages : 1 2