Envoyé par
plegat
Un peu plus...
Ce que je ferai... pour chaque objet, tu définis un seuil à partir duquel on laisse un item. Et pour chaque item, tu définis un seuil.
Exemple:
Objet A, seuil 0.6, item X: 0 à 0.6, item Y: 0.6 à 0.8, item Z: 0.8 à 1.0
En traduisant, tu tires deux rand, un qui sera à comparer au seuil, le second qui déterminera quel item apparait.
Si le premier rand est inférieur au seuil (donc 0.6), l'item apparait. Par exemple si le second rand a donné 0.68, ça donnera un item Y. Si il avait donné 0.89, ça aurait donné un item Z.
Et tu modules en fonction de tes différents objets. Par exemple:
Objet B, seuil 0.4, item X: 0 à 0.35, item Y: 0.35 à 0.4, item Z: 0.4 à 1.0
Plus sioux, si tu ne veux tirer qu'un seul rand, tu définis un item "fantome" qui va consommer une partie des probabilités, exemple:
Objet A, item "fantome" (ou "pas d'item"): 0 à 0.6, item X: 0.6 à 0.7, item Y: 0.7 à 0.8, item Z: 0.8 à 1.0
C'est un peu moins direct sous cette forme pour voir quelle est la probabilité d'un vrai item par rapport à un autre, mais ça économise un rand. Là, tu vois que les item X, Y et Z sont tous sur une plage de 0.1, ils ont tous la même probabilité d'apparaitre... si un item apparait!
Avec l'objet A du début, on avait 60% pour l'item X, 20% pour le Y et 20% pour le Z, ce qui se traduirait avec la version uni-rand:
Objet A, item "fantome" (ou "pas d'item"): 0 à 0.6 (=seuil à 60%), item X: 0.6 à 0.84 (60% des 40% restants, ça fait 24% du total), item Y: 0.84 à 0.92 (20%*40%=8%), item Z: 0.92 à 1.0 (idem que pour Y)
Partager