Choix aléatoire pondéré à l'aide de Python

Lakshay Kapoor 10 octobre 2023
  1. Utilisez la fonction random.choices() pour générer des choix aléatoires pondérés
  2. Utilisez la fonction numpy.random.choice() pour générer des choix aléatoires pondérés
Choix aléatoire pondéré à l'aide de Python

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 :

  1. Poids relatifs
  2. 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 avatar Lakshay Kapoor avatar

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

Article connexe - Python Random