Il modulo np.random e le prove di Bernoulli
Puoi pensare a una prova di Bernoulli come al lancio di una moneta (eventualmente) sbilanciata. In particolare, ogni lancio ha probabilità \(p\) di uscire testa (successo) e probabilità \(1-p\) di uscire croce (insuccesso). In questo esercizio scriverai una funzione per eseguire n prove di Bernoulli, perform_bernoulli_trials(n, p), che restituisce il numero di successi su n prove di Bernoulli, ciascuna con probabilità di successo p. Per eseguire ogni prova di Bernoulli, usa la funzione rng.random(), che restituisce un numero casuale tra zero e uno.
Questo esercizio fa parte del corso
Pensare in modo statistico con Python (Parte 1)
Istruzioni dell'esercizio
- Definisci una funzione con firma
perform_bernoulli_trials(n, p).- Inizializza a zero la variabile
n_success, il contatore deiTrue, cioè i successi delle prove di Bernoulli. - Scrivi un ciclo
forin cui esegui una prova di Bernoulli a ogni iterazione e incrementi il numero di successi se il risultato èTrue. Eseguiniterazioni ciclano surange(n).- Per eseguire una prova di Bernoulli, scegli un numero casuale tra zero e uno usando
rng.random(). Se il numero scelto è minore dip, incrementan_success(usa l'operatore+= 1). Un RNG è già stato istanziato come variabilernge inizializzato con un seed.
- Per eseguire una prova di Bernoulli, scegli un numero casuale tra zero e uno usando
- La funzione restituisce il numero di successi
n_success.
- Inizializza a zero la variabile
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
def perform_bernoulli_trials(n, p):
"""Perform n Bernoulli trials with success probability p
and return number of successes."""
# Initialize number of successes: n_success
n_success = ____
# Perform trials
for i in ____:
# Choose random number between zero and one: random_number
# If less than p, it's a success so add one to n_success
if ____:
____
return n_success