Choix aléatoire pondéré à l'aide de Python
-
Utilisez la fonction
random.choices()
pour générer des choix aléatoires pondérés -
Utilisez la fonction
numpy.random.choice()
pour générer des choix aléatoires pondérés
En Python, nous pouvons facilement générer des nombres aléatoires à l’aide des bibliothèques Random et NumPy.
La sélection d’éléments aléatoires dans une liste ou un tableau en fonction du résultat probable de l’élément est connue sous le nom de choix aléatoires pondérés. La sélection d’un élément est déterminée en attribuant une probabilité à chaque élément présent. Parfois, plus d’un élément est également sélectionné dans la liste des éléments créés.
Dans ce tutoriel, nous verrons comment générer des choix aléatoires pondérés en Python.
Utilisez la fonction random.choices()
pour générer des choix aléatoires pondérés
Ici, le module random
de Python est utilisé pour faire des nombres aléatoires.
Dans la fonction choices()
, les choix aléatoires pondérés sont effectués avec un remplacement. Il est également connu sous le nom d’échantillon aléatoire pondéré avec remise. Aussi, dans cette fonction, les poids jouent un rôle essentiel. Les poids définissent le résultat probable de la sélection de chaque élément. Il existe deux types de poids :
- Poids relatifs
- Poids cumulés
Choisissez des éléments avec des poids relatifs
Le paramètre weights
définit les poids relatifs. Le résultat probable est différent pour chaque élément de la liste. Si le résultat probable pour chaque élément a été fixé à l’aide des poids relatifs, les sélections sont alors effectuées sur la base des poids relatifs uniquement.
Voici un exemple:
import random
List = [12, 24, 36, 48, 60, 72, 84]
print(random.choices(List, weights=(30, 40, 50, 60, 70, 80, 90), k=7))
Ici, chaque élément de la liste se voit attribuer son propre poids, c’est-à-dire le résultat probable. De plus, k dans l’exemple ci-dessus est le nombre d’éléments nécessaires dans la liste donnée.
Production:
[60, 84, 36, 72, 84, 84, 60]
Ici, la somme totale des poids n’est pas de 100 car ce sont des poids relatifs et non des pourcentages. Le nombre 84 s’est produit trois fois car il a le poids le plus élevé de tous les poids. La probabilité de son apparition sera donc la plus élevée.
Choisissez des éléments avec des poids cumulatifs
Le paramètre cum_weight
permet de définir les poids cumulés. Le poids cumulé d’un élément est déterminé par le poids de l’élément précédent plus le poids relatif de cet élément. Par exemple, les poids relatifs [10, 20, 30, 40] sont équivalents aux poids cumulés [10, 30, 60, 100]
Voici un exemple:
import random
List = [13, 26, 39, 52, 65]
print(random.choices(List, cum_weights=(10, 30, 60, 100, 150), k=5))
Production:
[65, 65, 39, 13, 52]
Ici aussi, le nombre 65 apparaît plus que tout autre nombre car il a le poids le plus élevé.
Utilisez la fonction numpy.random.choice()
pour générer des choix aléatoires pondérés
Pour générer des choix pondérés aléatoirement, NumPy est généralement utilisé lorsqu’un utilisateur utilise la version Python inférieure à 3.6.
Ici, numpy.random.choice
est utilisé pour déterminer la distribution de probabilité. Dans cette méthode, les éléments aléatoires du tableau 1D sont pris et les éléments aléatoires d’un tableau numpy sont renvoyés à l’aide de la fonction choice()
.
import numpy as np
List = [500, 600, 700, 800]
sNumbers = np.random.choice(List, 4, p=[0.10, 0.20, 0.30, 0.40])
print(sNumbers)
Ici, la probabilité doit être égale à 1. Le nombre 4 représente la taille de la liste.
Production:
[800 500 600 800]
Lakshay Kapoor is a final year B.Tech Computer Science student at Amity University Noida. He is familiar with programming languages and their real-world applications (Python/R/C++). Deeply interested in the area of Data Sciences and Machine Learning.
LinkedIn