random.gauss() și celelalte distribuții în Python

Numere aleatorii (random) Python 3.0+ (binomialvariate: 3.12+)

Numere aleatoare după distribuții statistice: normală, triunghiulară, exponențială, binomială și altele.

Sintaxă
random.gauss(mu=0.0, sigma=1.0)
random.normalvariate(mu, sigma)
random.triangular(low, high, mode)
...

Ce face random.gauss() și celelalte distribuții

gauss(mu, sigma) și normalvariate(mu, sigma) generează valori din distribuția normală (clopotul lui Gauss), cu media mu și abaterea standard sigma; gauss este puțin mai rapidă. lognormvariate dă o distribuție al cărei logaritm este normal.

Alte distribuții: triangular(low, high, mode) (valori mai dese în jurul lui mode), expovariate(lambd) (timpi de așteptare), betavariate, gammavariate, paretovariate (legea 80/20), weibullvariate (durate de viață), vonmisesvariate (unghiuri) și binomialvariate(n, p) (Python 3.12+: numărul de succese din n încercări cu probabilitatea p).

Parametri

Parametru Descriere
mu, sigma, ... Parametrii distribuției alese.

Ce returnează

Un float (binomialvariate: int).

Exemple

Exemplul 1: Înălțimi simulate

import random, statistics
random.seed(10)
inaltimi = [random.gauss(170, 8) for _ in range(10_000)]
print(round(statistics.mean(inaltimi), 1), round(statistics.stdev(inaltimi), 1))
print(round(random.normalvariate(170, 8), 1), round(random.lognormvariate(0, 0.5), 3))

Rezultat

169.9 8.0
162.0 0.55

Exemplul 2: Alte distribuții

import random
random.seed(3)
print(round(random.triangular(10, 50, 20), 2))
print(round(random.expovariate(1 / 5), 2))
print(round(random.betavariate(2, 5), 3), round(random.gammavariate(2, 1), 3))
print(round(random.paretovariate(3), 3), round(random.weibullvariate(1, 1.5), 3))
print(round(random.vonmisesvariate(0, 4), 3))
print(random.binomialvariate(n=10, p=0.5))

Rezultat

19.76
3.93
0.199 0.165
1.105 0.415
0.747
7

Greșeli frecvente

  • Dai lui expovariate media în loc de rată: pentru o medie de 5 minute, argumentul este 1/5, nu 5.

Comenzi înrudite