Il modulo Python random mette a tua di­spo­si­zio­ne una gran varietà di funzioni per la ge­ne­ra­zio­ne di numeri casuali in diversi formati, dai numeri interi ai numeri a virgola mobile, fino alla selezione di elementi dalle liste.

Che cos’è il modulo Python random?

Il modulo Python random è una libreria integrata che ti permette di generare numeri casuali ed eseguire ope­ra­zio­ni basate sulla casualità nei tuoi programmi. Esso comprende diverse funzioni per la ge­ne­ra­zio­ne di numeri pseudo-casuali, che puoi uti­liz­za­re in molte ap­pli­ca­zio­ni, dalla si­mu­la­zio­ne fino allo sviluppo di giochi, nonché per la crip­to­gra­fia.

Una ca­rat­te­ri­sti­ca im­por­tan­te del modulo random è la sua ri­pe­ti­bi­li­tà. Definendo un valore iniziale o seed è possibile rendere ri­pro­du­ci­bi­le la ge­ne­ra­zio­ne casuale. Questa pos­si­bi­li­tà è molto utile per eseguire test, espe­ri­men­ti e si­mu­la­zio­ni in cui servono dati casuali ma coerenti.

Lista delle funzioni del modulo random

Il modulo Python random contiene diversi metodi per la ge­ne­ra­zio­ne e l’ela­bo­ra­zio­ne di numeri casuali. La tabella seguente mostra una pa­no­ra­mi­ca delle funzioni e delle loro ca­rat­te­ri­sti­che:

Nome funzione De­scri­zio­ne
seed(a=None, version=2) Definisce il valore iniziale (seed) per il ge­ne­ra­to­re di numeri casuali.
getstate() Re­sti­tui­sce lo stato ag­gior­na­to del ge­ne­ra­to­re di numeri casuali come oggetto.
setstate(state) Resetta lo stato del ge­ne­ra­to­re di numeri casuali per mezzo di un oggetto di stato.
getrandbits(k) Re­sti­tui­sce un numero intero con k bit.
randrange(start, stop, step) Genera un numero intero casuale scelto nell’in­ter­val­lo indicato.
randint(a, b) Re­sti­tui­sce un numero intero casuale nell’in­ter­val­lo indicato.
choice(seq) Re­sti­tui­sce un elemento casuale scelto nella sequenza indicata.
choices(population, weights=None, *, cum_weights=None, k=1) Crea una lista con k elementi scelti ca­sual­men­te nella po­po­la­zio­ne; le pro­ba­bi­li­tà possono essere indicate tra le opzioni.
sample(k, population) Genera una lista con k elementi scelti ca­sual­men­te nella po­po­la­zio­ne, senza duplicati.
shuffle(x) Rimescola gli elementi di una lista met­ten­do­li in ordine casuale.
random() Re­sti­tui­sce un numero a virgola mobile casuale compreso fra 0 e 1.
uniform(a, b) Re­sti­tui­sce un numero a virgola mobile casuale nell’in­ter­val­lo indicato, compresi i valori limite.
triangular(low, high, mode) Genera un numero a virgola mobile casuale nell’in­ter­val­lo di di­stri­bu­zio­ne trian­go­la­re.
betavariate(alpha, beta) Re­sti­tui­sce un numero a virgola mobile casuale scelto in una di­stri­bu­zio­ne beta.
expovariate(lambd) Re­sti­tui­sce un numero a virgola mobile casuale scelto in una di­stri­bu­zio­ne espo­nen­zia­le.
gammavariate(alpha, beta) Genera un numero a virgola mobile casuale scelto in una di­stri­bu­zio­ne gamma.
gauss(mu, sigma) Re­sti­tui­sce un numero a virgola mobile casuale scelto in una di­stri­bu­zio­ne gaussiana.
lognormvariate(mu, sigma) Genera un numero a virgola mobile casuale scelto in una di­stri­bu­zio­ne normale lo­ga­rit­mi­ca.
normalvariate(mu, sigma) Re­sti­tui­sce un numero a virgola mobile casuale scelto in una di­stri­bu­zio­ne normale.
vonmisesvariate(mu, kappa) Re­sti­tui­sce un numero a virgola mobile casuale scelto in una di­stri­bu­zio­ne di von Mises.
paretovariate(alpha) Re­sti­tui­sce un numero a virgola mobile casuale scelto in una di­stri­bu­zio­ne di Pareto.
weibullvariate(alpha, beta) Re­sti­tui­sce un numero a virgola mobile casuale scelto in una di­stri­bu­zio­ne di Weibull.

Selezione casuale di elementi in una lista

Se vorresti se­le­zio­na­re più elementi casuali in una lista, puoi uti­liz­za­re la funzione choices(seq, k=n) del modulo Python random, dove n è il numero di elementi casuali de­si­de­ra­ti.

import random
# A list of elements
my_list = ['Apple', 'Banana', 'Orange', 'Strawberry', 'Cherry']
# Randomly selecting an element from the list
random_elements = random.choices(my_list, k=3)
print("Randomly selected elements:", random_element)
python

In questo caso uti­liz­zia­mo la funzione choices() per se­le­zio­na­re tre elementi casuali nella lista my_list. I risultati sono re­sti­tui­ti sotto forma di lista composta da tre elementi casuali.

Web Hosting
Diventa il n°1 della rete con il provider di hosting n°1 in Europa
  • Di­spo­ni­bi­li­tà garantita al 99,99%
  • Dominio, SSL ed e-mail inclusi
  • As­si­sten­za 24/7 in lingua italiana

Mescolare una lista

La funzione shuffle() mette in ordine casuale gli elementi delle liste in Python.

import random
# A list of elements
my_list = ['Apple', 'Banana', 'Orange', 'Strawberry', 'Cherry']
# Shuffle the elements in the list
random.shuffle(my_list)
print("Shuffled list:", my_list) # Example Output: Shuffled list: ['Strawberry', 'Banana', 'Apple', 'Cherry', 'Orange']
python

Ricorda che shuffle() modifica la lista stessa e non ne re­sti­tui­sce una nuova. Dopo l’uso di shuffle(), la lista originale si presenta con un ordine casuale.

De­fi­ni­zio­ne di un seed

Se utilizzi la funzione random.seed() del modulo Python random per definire un valore seed specifico, il ge­ne­ra­to­re di numeri casuali viene avviato e genera numeri casuali in base a questo seed. In pratica, im­po­stan­do lo stesso valore seed in un momento suc­ces­si­vo si ottiene la ge­ne­ra­zio­ne dello stesso insieme di numeri casuali nella tua ap­pli­ca­zio­ne.

import random
# Setting the seed value to 42
random.seed(42)
# Generating random numbers
print(random.random())  # Example output: 0.6394267984578837
print(random.random())  # Example output: 0.025010755222666936
# Resetting the seed value to 42
random.seed(42)
# Generating random numbers again
print(random.random())  # Example output: 0.6394267984578837 (identical to the previous value)
print(random.random())  # Example output: 0.025010755222666936 (identical to the previous value)
python

Dopo aver impostato il valore seed, vengono generati ed emessi i numeri casuali. Quindi, im­po­stan­do il seed sullo stesso valore, vengono generati nuo­va­men­te gli stessi numeri casuali. Nel nostro esempio, il seed ha valore 42. In questo modo i numeri casuali sono ri­pro­du­ci­bi­li uti­liz­zan­do lo stesso valore seed.

Vai al menu prin­ci­pa­le