Elección aleatoria ponderada con Python

Lakshay Kapoor 10 octubre 2023
  1. Utilice la función random.choices() para generar elecciones aleatorias ponderadas
  2. Utilice la función numpy.random.choice() para generar elecciones aleatorias ponderadas
Elección aleatoria ponderada con Python

En Python, podemos generar fácilmente números aleatorios usando las bibliotecas Random y NumPy.

La selección de elementos aleatorios de una lista o un array por el resultado probable del elemento se conoce como opciones aleatorias ponderadas. La selección de un elemento se determina asignando una probabilidad a cada elemento presente. A veces, también se selecciona más de un elemento de la lista de elementos hechos.

En este tutorial, discutiremos cómo generar elecciones aleatorias ponderadas en Python.

Utilice la función random.choices() para generar elecciones aleatorias ponderadas

Aquí, el módulo random de Python se usa para hacer números aleatorios.

En la función choices(), las elecciones aleatorias ponderadas se realizan con un reemplazo. También se conoce como muestra aleatoria ponderada con reemplazo. Además, en esta función, los pesos juegan un papel fundamental. Los pesos definen el resultado probable de la selección de cada elemento. Hay dos tipos de pesos:

  1. Pesos relativos
  2. Pesos acumulativos

Elija elementos con pesos relativos

El parámetro weights define los pesos relativos. El resultado probable es diferente para cada elemento de la lista. Si el resultado probable para cada elemento se ha fijado utilizando los pesos relativos, entonces las selecciones se realizan basándose únicamente en los pesos relativos.

Aquí hay un ejemplo:

import random

List = [12, 24, 36, 48, 60, 72, 84]
print(random.choices(List, weights=(30, 40, 50, 60, 70, 80, 90), k=7))

Aquí, a cada elemento de la lista se le da su propio peso, es decir, resultado probable. Además, k en el ejemplo anterior es el número de elementos necesarios de la lista dada.

Producción :

[60, 84, 36, 72, 84, 84, 60]

Aquí, la suma total de ponderaciones no es 100 porque son ponderaciones relativas y no porcentajes. El número 84 ha aparecido tres veces ya que tiene el mayor peso de todos los pesos. Entonces, la probabilidad de que ocurra será la más alta.

Elija elementos con pesos acumulativos

El parámetro cum_weight se utiliza para definir los pesos acumulativos. El peso acumulado de un elemento está determinado por el peso del elemento anterior más el peso relativo de ese elemento. Por ejemplo, los pesos relativos [10, 20, 30, 40] son ​​equivalentes a los pesos acumulativos [10, 30, 60, 100]

Aquí hay un ejemplo:

import random

List = [13, 26, 39, 52, 65]
print(random.choices(List, cum_weights=(10, 30, 60, 100, 150), k=5))

Producción :

[65, 65, 39, 13, 52]

Aquí también, el número 65 aparece más que cualquier otro número ya que tiene el peso más alto.

Utilice la función numpy.random.choice() para generar elecciones aleatorias ponderadas

Para generar opciones ponderadas aleatorias, NumPy se usa generalmente cuando un usuario usa la versión de Python menor que 3.6.

En este caso, se utiliza numpy.random.choice para determinar la distribución de probabilidad. En este método, se toman elementos aleatorios de un array 1D y se devuelven elementos aleatorios de un array numérica utilizando la función 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)

Aquí, la probabilidad debe ser igual a 1. El número 4 representa el tamaño de la lista.

Producción :

[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

Artículo relacionado - Python Random