freeCodeCamp/curriculum/challenges/italian/07-scientific-computing-wit.../scientific-computing-with-p.../probability-calculator.md

5.6 KiB

id title challengeType forumTopicId dashedName
5e44414f903586ffb414c950 Calcolatore delle probabilità 10 462364 probability-calculator

--description--

Lavorerari a questo progetto con il nostro codice d'inizio su Replit.

Stiamo ancora sviluppando la parte didattica interattiva del curriculum di Python. Per ora, ecco alcuni video sul canale YouTube di freeCodeCamp.org che ti insegneranno tutto quello che devi sapere per completare questo progetto:

--instructions--

Supponiamo che ci sia un cappello contenente 5 palline blu, 4 palline rosse e 2 palline verdi. Qual è la probabilità che una pescata casuale di 4 palline contenga almeno 1 pallina rossa e 2 palline verdi? Mentre sarebbe possibile calcolare la probabilità utilizzando la matematica avanzata, un modo più facile è quello di scrivere un programma per eseguire un gran numero di esperimenti per stimare una probabilità approssimativa.

Per questo progetto, scriverai un programma per determinare la probabilità approssimativa di pescare a caso determinate palline da un cappello.

Per prima cosa, crea una classe Hat (cappello) in prob_calculator.py. La classe deve prendere un numero variabile di argomenti che specificano il numero di palline di ogni colore che sono nel cappello. Ad esempio, un oggetto di classe potrebbe essere creato in uno qualsiasi di questi modi:

hat1 = Hat(yellow=3, blue=2, green=6)
hat2 = Hat(red=5, orange=4)
hat3 = Hat(red=5, orange=4, black=1, blue=0, pink=2, striped=9)

Un cappello sarà sempre creato con almeno una pallina. Gli argomenti passati all'oggetto cappello alla creazione dovrebbero essere convertiti in una variabile di istanza contents. contents dovrebbe essere una lista di stringhe contenente un elemento per ogni pallina nel cappello. Ogni elemento nella lista dovrebbe essere il nome del colore che rappresenti una singola sfera di quel colore. Ad esempio, se il tuo cappello è {"red": 2, "blue": 1}, contents dovrebbe essere ["red", "red", "blue"].

La classe Hat dovrebbe avere un metodo draw che accetta un argomento che indica il numero di palline da prelevare dal cappello. Questo metodo dovrebbe rimuovere palline a caso da contents e restituire quelle palline come un elenco di stringhe. Le palle non devono tornare nel cappello durante il pescaggio, simile all'esperimento con un'urna senza sostituzione. Se il numero di palline da pescare supera la quantità disponibile, restituisci tutte le palline.

Successivamente, crea una funzione experiment in prob_calculator.py (non all'interno della classe Hat). Questa funzione dovrebbe accettare i seguenti argomenti:

  • hat: Un oggetto cappello contenente palline che dovrebbero essere copiate all'interno della funzione.
  • expected_balls: Un oggetto che indica il gruppo esatto di palline che tentiamo di attingere dal cappello per l'esperimento. Ad esempio, per determinare la probabilità di pescare 2 palline blu e 1 pallina rossa dal cappello, imposta expected_balls a {"blue":2, "red":1}.
  • num_balls_drawn: Il numero di palline da pescare dal cappello in ogni esperimento.
  • num_experiments: Il numero di esperimenti da eseguire. (Più esperimenti eseguiti, più precisa sarà la probabilità approssimativa.)

La funzione experiment dovrebbe restituire una probabilità.

Ad esempio, diciamo che si vuole determinare la probabilità di ottenere almeno 2 palline rosse e 1 pallina verde quando si pescano 5 palline da un cappello contenente 6 nere, 4 rosse e 3 verdi. Per farlo, eseguiamo N esperimenti, contiamo quante volte M riceviamo almeno 2 palline rosse e 1 pallina verde, e stimiamo la probabilità come M/N. Ogni esperimento consiste nell'iniziare con un cappello contenente le palline specificate, pascare un certo numero di palline, e controllare se abbiamo ottenuto le palline che stavamo tentando di pescare.

Ecco come verrebbe chiamata la funzione experiment basata sull'esempio sopra con 2000 esperimenti:

hat = Hat(black=6, red=4, green=3)
probability = experiment(hat=hat,
                  expected_balls={"red":2,"green":1},
                  num_balls_drawn=5,
                  num_experiments=2000)

Poiché questo è basato su pescaggi casuali, la probabilità sarà leggermente diversa ogni volta che il codice viene eseguito.

Suggerimento: Considera di utilizzare i moduli già importati nella parte superiore di prob_calculator.py. Non inizializzare il seme casuale entro prob_calculator.py.

Sviluppo

Scrivi il tuo codice in prob_calculator.py. Per lo sviluppo, puoi usare main.py per testare il tuo codice. Fare clic sul pulsante "Run" e main.py verrà eseguito.

Il codice iniziale include le istruzioni di import per i moduli copy e random. Considera di utilizzarli nel tuo progetto.

Test

I test unitari per questo progetto sono in test_module.py. Abbiamo impotato i test da test_module.py in main.py per la tua convenienza. I test eseguiranno automaticamente quando usi il bottone "run".

Invio

Copia l'URL del tuo progetto e consegnalo nell'input qua sotto.

--hints--

Dovrebbe calcolare correttamente le probabilità e superare tutti i test.


--solutions--

/**
  Backend challenges don't need solutions,
  because they would need to be tested against a full working project.
  Please check our contributing guidelines to learn more.
*/