random

Funzioni per generare / manipolare numeri pseudocasuali

Nome funzioneTipoFunzionalità
random.choice(z)Genera un elemento casuale scegliendolo tra quelli appartenenti alla struttura dati z
random.choices(z, k=n)listGenera n elementi casuali (con reinserimento) scegliendoli tra quelli appartenenti alla struttura dati z
random.randint(a, b)intGenera un numero intero nell’intervallo [a, b]
random.random()floatGenera un numero reale nell’intervallo [0, 1)
random.randrange(stop)intCome choice(range(top))
random.randrange(start, stop)intCome choice(range(start, stop))
random.randrange(start, stop, step)intCome choice(range(start, stop, step))
random.sample(z, n)listGenera una lista costruita con n elementi casuali della struttura dati z.
Senza reinserimento. n ≤ len(z)
random.seed()Inizializza il generatore tramite il valore della funzione time()
random.seed(x)Inizializza il generatore tramite il valore di x
random.shuffle(z)Mescola, sul posto, gli elementi della struttura dati z
random.uniform(x1, x2)floatGenera numeri reali nell’intervallo [x1, x2)

Ancora

  • random.choices(...), con pesi
  • random.getrandbits(k), genera un numero intero con k bit

Il modulo random fornisce anche generatori di numeri pseudo-casuali per le distribuzioni non uniformi

  • betavariate()
  • expovariate()
  • gammavariate()
  • gauss()
  • triangular(), …

Prima di utilizzare le funzioni ricorda di usare

import random

Senza argomenti

random.seed()      #  Facoltativo: inizializza il generatore
x=random.random()  #  x in [0.0, 1.0)
x=random.random()  #  x in [0.0, 1.0) (un altro...)

Un numero / una stringa

a=10
random.seed(a) 
x=random.random()  #  0.5714025946899135
x=random.random()  #  0.4288890546751146
random.seed(a)
x=random.random()  #  0.5714025946899135 (già visto...)

s="Peppino"
random.seed(s)
x=random.random()  #  0.0013421729058085141
x=random.random()  #  0.7417433233964847
random.seed(s)
x=random.random()  #  0.0013421729058085141 (già visto...)

Due numeri

a=1
b=6
x=random.randint(a,b)             #  x intero in [a, b]
x=random.randint(a,b)             #  x intero in [a, b] (un altro...)
x=int((b-a+1)*random.random()+a)  #  lo stesso risultato di random.randint(a,b)

x1=1.0
x2=1.5
x=random.uniform(x1,x2)           #  x in [x1,x2)
x=random.uniform(x1,x2)           #  x in [x1,x2) (un altro...)
x=(x2-x1)*random.random()+x1      #  lo stesso risultato di random.uniform(x1,x2)

Una lista

lista=[1,8,0,1,1,9,2,8]

random.shuffle(lista)       #  mescolata

x=random.choice(lista))     #  un elemento della lista (stringa, tupla, ...)
x=random.choice(lista))     #  un altro

z=random.sample(lista, 2))  #  una lista con 2/3/... elementi della lista (stringa, tupla, ...)
z=random.sample(lista, 2))  #  un'altra lista