Numeri random

Qui trovi un insieme di esercizi che richiedono l'utilizzo dei numeri random.  Realizza la tua soluzione e poi confronta la tua soluzione con quella proposta dal professore. 

Richiami teorici sui numeri random

Per generare un numero random si ha bisogno di due funzioni:

Si ricorda che il computer non è veramente in grado di generare numeri random, ma solo di simulare tale sequenza di numeri casuali. Per comprendere meglio immaginiamo che il computer abbia simulato una sequenza random di numeri... 41, 18467, 6334, 26500, 19169... 

Scegliere il seme da cui cominciare a generare i numeri random equivale a scegliere da quale valore della sequenza partire. Se non scegliessimo il seme, ad ogni esecuzione si partirebbe dal primo numero della sequenza. 

Per fare in modo che in diverse esecuzioni siano generate dei numeri diversi si opta per l'utilizzo della funzione time(NULL); che restituisce il numero di secondi trascorsi dal 1 gennaio 1970. Ogni secondo la time(NULL); genererà un numero diverso e questo garantisce che le varie esecuzioni del programma genereranno numeri random diversi.

Per poter richiamare srand() e rand() si deve includere la libreria stdlib.h, mentre per richiamare la funzione time si deve includere la libreria time.h

Dunque un esempio di generazione di numeri random completo è il seguente:

Esercizi sui numeri random

Esercizio 1: Il lancio dei dadi nel gioco dell'oca

Nel gioco dell'oca vengono usati due dadi. Il giocatore li lancia insieme e infine somma il valore dei due numeri estratti. 

Realizzare un programma che sia in grado di simulare il lancio dei due dadi (a sei facce) e mostri a schermo il valore del primo dado, quello del secondo ed infine la somma dei due valori.

Esercizio 2: Numeri random pari

Realizzare un programma che chieda all'utente di inserire un numero intero positivo num. In seguito, il programma genera e stampa a schermo num numeri random nell'intervallo [0, 100]. Infine, il programma indicherà quanti di questi numeri siano pari e quanti dispari.

Esercizio 3: Intervallo random negativo

Realizzare un programma che sia in grado di generare numeri random nell'intervallo [-100, + 100]. Il programma deve generare numeri random in quell'intervallo fino a che il programma abbia generato sia il valore -100 che il valore +100.

Ad esempio:
3, -67, 87, 100, 45, -32, -61, 100, -2, -100  --> Il programma si ferma perché sia 100 che -100 sono stati generati!

Se noti che il programma non termina mai, probabilmente c'è qualche errore. Usa i comandi ctrl+c per arrestare l'esecuzione del programma. Inoltre, introduci delle stampe di debug per poter trovare l'errore.

Esercizio 4: L'interrogazione

Realizzare un programma che permetta ad un docente di effettuare un'estrazione casuale per decidere chi interrogare. In particolare, il programma deve: 

Ad esempio:
n = 25 --> Il programma deve mostrare a schermo un numero da 1 a 25.

Esercizio 5: L'interrogazione

Realizzare un programma che consenta di creare 10 numeri random (tra 18 e 100).
Il programma deve mostrare a schermo i 10 numeri generati e alla fine il valore minimo ed il valore massimo.

Esercizio 6: Assegnazione dei progetti

Il professore d'informatica ha scritto 5 progetti per le vacanze natalizie. Vuole assegnare i 5 progetti in modo casuale ai 5 gruppi che sono stati creati dagli studenti durante l'ora di collettivo. Per far ciò vorrebbe un'applicazione che sia in grado di assegnare in maniera random i 5 progetti agli studenti. Nello specifico ogni gruppo deve avere un progetto diverso assegnato. 

Realizzare un programma in grado di mostrare a schermo un output simile al seguente:

"Il primo gruppo svolgerà il progetto numero 3"
"Il secondo gruppo svolgerà il progetto 5"
"Il terzo gruppo svolgerà il progetto 4"
"Il quarto gruppo svolgerà il progetto 2"
"Il quinto gruppo svolgerà il progetto 1"