Tirage aléatoire dans une liste avec coefficients python
Résolu
Bonjour,
Je suis actuellement de développer un jeu sur python (je suis débutant).
J'ai besoin de choisir un élément au hasard dans une liste mais je veux que les éléments de la liste aient des coefficient et aient donc plus de chance d'être sélectionnés si le coefficient est plus élevé.
Merci d'avance
Je suis actuellement de développer un jeu sur python (je suis débutant).
J'ai besoin de choisir un élément au hasard dans une liste mais je veux que les éléments de la liste aient des coefficient et aient donc plus de chance d'être sélectionnés si le coefficient est plus élevé.
Merci d'avance
A voir également:
- Tirage aléatoire python
- Citizen code python avis - Accueil - Outils
- Python est introuvable. exúcutez sans argument pour procúder ó l - Forum Python
- Python pix ✓ - Forum Python
- Mot secret python pix ✓ - Forum Python
- Programme python ✓ - Forum Python
2 réponses
Bonjour,
Tu pourrais faire une liste avec (élément, poids) (('A',2),('B',3),('C',5) ....
Avec cette liste tu génères une autre liste ('A','A','B','B','B','C','C','C','C','C',...)
Et sur cette dernière liste tu sélectionnes une valeur aléatoirement.
Tu pourrais faire une liste avec (élément, poids) (('A',2),('B',3),('C',5) ....
Avec cette liste tu génères une autre liste ('A','A','B','B','B','C','C','C','C','C',...)
Et sur cette dernière liste tu sélectionnes une valeur aléatoirement.
Bonjour,
Si tu veux faire un seul tirage :
Dans les deux cas, tu peux passer en paramètre une distribution de probabilité discrète.
Si tu veux faire plusieurs tirages, c'est le même principe :
L'avantage de la version
Exemples :
Bonne chance
Si tu veux faire un seul tirage :
- voir
random.choices
(aveck = 1
) pour la version standard - voir
np.random.choice
pour la versionnumpy
. Note que contrairement à la version standard les poids doivent être normalisés (i.e., leur somme doit valoir 1)
Dans les deux cas, tu peux passer en paramètre une distribution de probabilité discrète.
Si tu veux faire plusieurs tirages, c'est le même principe :
- voir
random.choices
pour la version standard (aveck > 1
); - voir le paramètre
size
denp.random.choice
pour la versionnumpy
.
L'avantage de la version
numpy, c'est que si tu veux tirer un tableau (quel que soit le nombre de dimensions), le paramètre
sizepermet de tout faire directement (et par la suite, si tu as des calculs à faire, ce sera plus rapide en utilisant les fonctionnalités de
numpyqu'en python standard). Pour un jeu, ça n'est pas forcément un aspect déterminant car il souvent peu de calculs, mais pour du calcul scientifique ça peut être un point important.
Exemples :
import random print(random.choices(["apple", "banana", "cherry"], k = 1, weights = [8, 1, 1])) print(random.choices(["apple", "banana", "cherry"], k = 5, weights = [8, 1, 1]))
import numpy as np import numpy.random print(np.random.choice(["apple", "banana", "cherry"], p = [0.8, 0.1, 0.1])) print(np.random.choice(["apple", "banana", "cherry"], size= (5, ), p = [0.8, 0.1, 0.1]))
Bonne chance