🚀 Nuova versione beta disponibile! Feedback o problemi? Contattaci

Il Modulo `random` in Python

Codegrind Team•Sep 11 2024

Il modulo random di Python fornisce strumenti per generare numeri casuali, mescolare sequenze, selezionare elementi casuali da una lista e molto altro. È particolarmente utile per creare simulazioni, giochi o per implementare logiche stocastiche. In questo articolo esploreremo come utilizzare le funzionalità principali del modulo random con esempi pratici.

Importare il Modulo random

Per utilizzare le funzionalità del modulo random, devi prima importarlo nel tuo programma:

import random

Funzioni Principali del Modulo random

1. random.random(): Generare un Numero Decimale Casuale tra 0 e 1

La funzione random.random() restituisce un numero in virgola mobile casuale compreso tra 0.0 e 1.0.

import random

numero_casuale = random.random()
print(numero_casuale)  # Output: un numero tra 0.0 e 1.0

2. random.randint(a, b): Generare un Numero Intero Casuale

La funzione random.randint(a, b) restituisce un numero intero casuale compreso tra a e b (inclusi).

numero_intero = random.randint(1, 10)
print(numero_intero)  # Output: un numero intero tra 1 e 10 (incluso)

3. random.choice(seq): Selezionare un Elemento Casuale da una Lista

La funzione random.choice(seq) restituisce un elemento casuale da una sequenza, come una lista o una stringa.

lista = ['apple', 'banana', 'cherry']
elemento_casuale = random.choice(lista)
print(elemento_casuale)  # Output: un elemento casuale dalla lista

4. random.choices(population, k): Selezionare Più Elementi Casuali

La funzione random.choices(population, k) seleziona una lista di k elementi casuali dalla sequenza population, con ripetizione.

frutti = ['apple', 'banana', 'cherry', 'orange']
scelte_casuali = random.choices(frutti, k=3)
print(scelte_casuali)  # Output: una lista di 3 elementi casuali dalla lista originale

5. random.sample(population, k): Selezionare Più Elementi Casuali Senza Ripetizione

La funzione random.sample(population, k) restituisce una lista di k elementi casuali dalla sequenza population, senza ripetizione.

frutti = ['apple', 'banana', 'cherry', 'orange']
campione_casuale = random.sample(frutti, k=2)
print(campione_casuale)  # Output: una lista di 2 elementi casuali senza ripetizione

6. random.uniform(a, b): Generare un Numero Decimale Casuale tra Due Limiti

La funzione random.uniform(a, b) restituisce un numero decimale casuale compreso tra a e b (inclusi).

decimale_casuale = random.uniform(1.5, 5.5)
print(decimale_casuale)  # Output: un numero decimale tra 1.5 e 5.5

7. random.shuffle(seq): Mescolare una Lista

La funzione random.shuffle(seq) mescola gli elementi di una lista in place.

frutti = ['apple', 'banana', 'cherry', 'orange']
random.shuffle(frutti)
print(frutti)  # Output: una lista con gli elementi in ordine casuale

8. random.randrange(start, stop[, step]): Generare un Numero Intero con Intervallo

La funzione random.randrange(start, stop[, step]) restituisce un numero intero casuale tra start e stop, con uno step opzionale. Il numero stop non è incluso nell’intervallo.

numero_intero = random.randrange(1, 10, 2)
print(numero_intero)  # Output: un numero intero tra 1 e 9 con step di 2

Impostare un Seed con random.seed()

Puoi utilizzare random.seed() per inizializzare il generatore di numeri casuali con un seed specifico. Questo ti permette di ottenere risultati riproducibili, utili per test o debug.

Esempio di Utilizzo di random.seed()

random.seed(42)
print(random.random())  # Output: 0.6394267984578837
print(random.randint(1, 10))  # Output: 2

In questo esempio, ogni volta che imposti il seed a 42, otterrai sempre gli stessi numeri casuali. Questo è utile quando desideri che l’esecuzione del programma produca lo stesso output ogni volta per scopi di testing.

Distribuzioni Probabilistiche

Il modulo random supporta anche la generazione di numeri casuali basati su diverse distribuzioni probabilistiche.

1. random.gauss(mu, sigma): Distribuzione Normale (Gaussiana)

La funzione random.gauss(mu, sigma) restituisce un numero casuale dalla distribuzione normale (gaussiana) con media mu e deviazione standard sigma.

numero_normale = random.gauss(0, 1)
print(numero_normale)  # Output: un numero casuale dalla distribuzione normale con media 0 e deviazione standard 1

2. random.expovariate(lambd): Distribuzione Esponenziale

La funzione random.expovariate(lambd) restituisce un numero casuale da una distribuzione esponenziale con parametro lambd.

numero_esponenziale = random.expovariate(1.5)
print(numero_esponenziale)  # Output: un numero casuale dalla distribuzione esponenziale

Applicazioni del Modulo random

1. Simulare il Lancio di un Dado

Puoi utilizzare random.randint() per simulare il lancio di un dado.

lancio_dado = random.randint(1, 6)
print(f"Lancio del dado: {lancio_dado}")

2. Generare una Password Casuale

Utilizzando random.choice() o random.choices(), puoi generare una password casuale da un insieme di caratteri.

import string

lunghezza_password = 8
caratteri = string.ascii_letters + string.digits + string.punctuation
password_casuale = ''.join(random.choices(caratteri, k=lunghezza_password))
print(f"Password casuale: {password_casuale}")

3. Simulare l’Estrazione di una Carta da un Mazzo

Utilizzando random.choice(), puoi simulare l’estrazione di una carta da un mazzo di carte.

semi = ['Cuori', 'Quadri', 'Fiori', 'Picche']
valori = ['2', '3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K', 'A']

carta = random.choice(valori) + " di " + random.choice(semi)
print(f"Carta estratta: {carta}")

4. Simulare una Lotteria

Utilizzando random.sample(), puoi simulare una lotteria selezionando un certo numero di vincitori da un insieme di partecipanti.

partecipanti = ['Anna', 'Luca', 'Marco', 'Sara', 'Paolo']
vincitori = random.sample(partecipanti, 2)
print(f"Vincitori della lotteria: {vincitori}")

Conclusione

Il modulo random in Python offre una vasta gamma di strumenti per la generazione di numeri casuali e per la manipolazione casuale di sequenze. Che tu stia costruendo simulazioni, giochi o implementando algoritmi casuali, random ti fornisce le funzioni essenziali per lavorare con la casualità in modo flessibile ed efficiente.