Este módulo implementa varios generadores de números pseudoaleatorios distribuidos. Puede dibujar un número aleatorio en el intervalo, puede extraer un elemento de la lista, puede extraer una muestra de la distribución.
No se puede acceder directamente al módulo aleatorio, debe importar el módulo aleatorio y luego llamar a este método a través del objeto estático aleatorio.
import random
1 Genera números aleatorios
La semilla del generador aleatorio, bajo la misma semilla, genera el mismo número aleatorio
random.seed()
Devuelve el siguiente número de coma flotante aleatorio en el rango [0, 1.0).
random.random()
random.int (a, b) genera un número entero, a <= N <= b.
random.randint(1,4) #
2
2 Seleccione aleatoriamente uno en la secuencia
Selecciona aleatoriamente un número entero en el rango de secuencia () random.randrange (inicio, parada, paso)
random.randrange(1,5,2)
3
random.choice (población), devuelve un elemento aleatorio de la población de secuencia no vacía. Si seq está vacío, se genera un IndexError.
random.choice([2,5,8])
8
opciones.aleatorias (población, pesos = Ninguno, *, cum_weights = Ninguno, k) Extraiga K del total de acuerdo con el peso, y la longitud de la secuencia de pesos debe ser igual a la longitud de la población. Obviamente, no se da ningún peso y k = 1. Es equivalente a
random.choice (población).
random.choices(['red', 'black', 'green'], [4, 10, 2], k=6)
['green', 'black', 'red', 'black', 'green', 'black']
random.sample (población, k, *, conteos = Ninguno), devuelve una lista de k de longitud de elementos únicos seleccionados de la secuencia de población o conjunto, es decir, muestreo aleatorio sin repetición (sin reemplazo).
random.sample(['red', 'black', 'green'], 2)
['red', 'green']
Después de la versión 3.9, se agrega el parámetro de conteos y se puede especificar el número. Random.sample (['red', 'red', 'red', 'black', 'green'], 2) es equivalente a random. muestra (['rojo', 'negro', 'verde'], conteos = [3,1,1], 2)
3 extrae una muestra de la distribución
Las distribuciones más utilizadas son las siguientes:
función | repartido |
---|---|
gauss (mu, sigma) / normalvarita (mu, sigma) | Distribución normal |
uniforme (a, b) | Distribuidos equitativamente |
expovariar (lamda) | distribución del índice |
gammavariate (alfa, beta) | Distribución gamma |
lognormvariate (mu, sigma) | Distribución lognormal |
betavariar (alfa, beta) | Distribución beta |
weibullvariate (alfa, beta) | Distribución de Weibull |
paretovariable (alfa) | Distribución de Pareto |
vonmisesvariate (mu, kappa) | distribución de von Mises ( |
random.gauss(1,2)
-0.34372692554557815
random.uniform(1,2)
1.7719936383153665
random.expovariate(1)
0.079384517694696
random.gammavariate(1,3)
3.8134444290373866
random.lognormvariate(1,2)
2.561312589509173
random.betavariate(1,2)
0.03565784800319274
random.weibullvariate(1,2)
1.211306128111137
random.paretovariate(1)
1.709941711311189
random.vonmisesvariate(1,2)
2.377632588889548
data = [random.gammavariate(2,4) for i in range(10000)] # 抽取10000个gamma分布样本
#直方图
import matplotlib.pyplot as plt
plt.hist(data, bins=100, color="#FF0000", alpha=.7)
4 Mezclar el orden
random.shuffle (x [, random]) Mezcla la secuencia x aleatoriamente.
a=[1,3,5,7,9]
random.shuffle(a);print(a)
[3, 7, 5, 1, 9] # 原地打乱顺序