Generazione di numeri casuali in Dev C++

Slides:



Advertisements
Presentazioni simili
Il linguaggio C++.
Advertisements

C++ Di Marco Cozzani.
1 La Standard Template Library vettori, liste, mappe, …. find, replace, reverse, sort, …. puntatori intelligenti La libreria standard STL e una libreria.
Sottoprogrammi: funzioni e procedure
Nel C non esiste un dato primario di tipo stringa; queste sono rappresentate con un array monodimensionale di caratteri (tipo char). Così per definire.
Preincremento e PostIncremento in C++
Puntatori in C e C++.
© 2007 SEI-Società Editrice Internazionale, Apogeo Unità F2 Selezione.
Code::Blocks Ambiente di sviluppo.
Iterazione while – do while - for.
Code::Blocks Ambiente di sviluppo.
Stringhe di caratteri In linguaggio C.
Struttura di un programma
Linguaggio C++ Operatori – numeri pseudocasuali - costanti.
Numeri casuali.
Selezione - approfondimento
Procedure e funzioni In linguaggio C.
Introduzione ad Array e Funzioni 2IC/2ID – a. s.2012/13.
I DATI LE ISTRUZIONI LE STRUTTURE FONDAMENTALI
© 2007 SEI-Società Editrice Internazionale, Apogeo Unità F3 Iterazione.
ITIS LATTANZIO Unità Didattica Materia Informatica Funzioni in C++
Differenze tra C e C++ Commenti: Adesso puoi inserire dei commenti tra // e la fine della linea. Usare le librerie C: In C++ puoi anche chiamare una funzione.
Le funzioni.
Algoritmi in C++ (1) da completare
Concetti di base: header file, funzione main(),set caratteri C++, token, operatori, espressioni etc. Flusso di controllo, cicli, costrutti.
La ricorsione Simulazione. Il Main /* Programma che usa una funzione ricorsiva*/ #include #define MAX_N 8 main() int valore, dato; printf(Introduci n:
TERNE PITAGORICHE Obiettivi dell’esercitazione
Programmazione Procedurale in Linguaggio C++
FUNZIONI DI BIBLIOTECA
Costruzione di Interfacce Lezione 10 Dal Java al C++ parte 1
Costruzione di Interfacce Lezione 12 C++STL
CORSO DI PROGRAMMAZIONE II Introduzione alla ricorsione
CORSO DI PROGRAMMAZIONE II
Array Un array è una collezione in sequenza di variabili del medesimo tipo Riferimento con un nome comune Nome_studente1 Nome_studente2. Nome_studenteN.
Funzioni di Libreria per le stringhe DICHIARAZIONI CONTENUTE NEL FILE: char *strcpy( char *dest, const char *sorg ); Copia sorg in dest, incluso il carattere.
Il main program Ogni programma in C++, per essere eseguibile, deve contenere una funzione main() da cui l’esecuzione comincerà main() deve avere un tipo.
Politecnico di Milano Esercizi Preparazione alla prima prova intermedia.
Le liste dinamiche La ricorsione
TIPI DI DATO Un tipo di dato T è definito come: un dominio di valori, D un insieme di funzioni F 1,..,F n sul dominio D un insieme di predicati P 1,..,P.
Elementi di programmazione ad oggetti a. a. 2009/2010 Corso di Laurea Magistrale in Ingegneria Elettronica Docente: Mauro Mazzieri, Dipartimento di Ingegneria.
Elementi di programmazione ad oggetti a. a. 2009/2010 Corso di Laurea Magistrale in Ingegneria Elettronica Docente: Mauro Mazzieri, Dipartimento di Ingegneria.
Elementi di programmazione ad oggetti a. a. 2009/2010
Elementi di programmazione ad oggetti a. a. 2009/2010 Corso di Laurea Magistrale in Ingegneria Elettronica Docente: Mauro Mazzieri, Dipartimento di Ingegneria.
ITIS LATTANZIO Unità Didattica Materia Informatica Funzioni in C++
Crivello Di Eratostene (fonte wikipedia
Università degli Studi di BresciaA.A. 2012/2013 Fondamenti di Programmazione Docente: Alessandro SaettiA.A. 2012/2013 Università degli Studi di Brescia.
In molti casi è utile assegnare a degli identificatori dei valori che restino costanti durante tutto il programma e che non possano essere cambiati nemmeno.
void binario(int n); …………………
Creazione progetto in C++/DEV
G. Amodeo, C. Gaibisso Programmazione di Calcolatori Lezione XVIII Le matrici Programmazione di Calcolatori: le matrici 1.
2000 Prentice Hall, Inc. All rights reserved. Capitolo 5 (Deitel) Le funzioni Indice degli argomenti Introduzione Moduli nei programmi C 5.3.
2000 Prentice Hall, Inc. All rights reserved. Attivazione di funzioni La chiamata/attivazione di funzione viene indicata citando il nome della funzione.
Esercizi La distanza di hamming tra due interi x e y si definisce come il numero di posizioni nella rappresentazione binaria di x e y aventi bit differenti.
Ricerca sequenziale in un array di interi
1 Esempi domande di esame. 2 Dato il seguente programma #include int main(){ int *p,j=9,i=5; p=&j; *p=i; printf("%d %d %d\n", i,j,*p); scanf("%d",p);/*
Complessità ciclomatica
Le funzioni Rassegna degli argomenti trattati LS Tron 14/15 Prof. Carla Fanchin.
#include void main() { int a,b,c,; float s, x,x1,x2,delta,alfa,beta; int num[3]; int i; printf("La forma classica dell'equazione di 2° grado è: a*x^2+b*x+c=0\n.
1 FONDAMENTI DI INFORMATICA II Ingegneria Gestionale a.a ° Ciclo Pile e Code.
CORSO DI PROGRAMMAZIONE II
Procedure e funzioni In linguaggio C.
Scrivere e compilare programmi
L’ordinamento per Selezione seleziona l’elemento con valore maggiore e lo scambia con il primo elemento del vettore. Tra gli N-1 elementi rimanenti viene.
C++:Strutture di Controllo
Copyright © Istituto Italiano Edizioni Atlas
Conio.h contiene la dichiarazione di funzioni usate per richiamare alcune routine DOS di gestione del video e della tastiera. NECESSARIA PER system(‘’cls’’)
Files in C++ Motivazioni Un programma in esecuzione legge (sequenzialmente) una sequenza di caratteri prodotti "al volo" dall'utente (tramite tastiera)
Operatori – numeri pseudocasuali - costanti
TRAUMI Protocolli di intervento.
Passaggio di parametri per indirizzo
Transcript della presentazione:

Generazione di numeri casuali in Dev C++

La funzione rand() Una funzione è un sottoprogramma che “svolge un lavoro” e restituisce un valore La funzione rand() genera un numero casuale compreso tra 0 e RAND_MAX (una costante, che secondo l’ANSI C – un protocollo per gli standard di C – deve essere maggiore o uguale di 32767);

#include <iostream> using namespace std; int main() { int x,i; for (i=1;i<=10;i++) x = rand(); cout << x << endl; } system("Pause"); Questo programma genera 10 numeri casuali

Ma se voglio invece generare numeri ad es. compresi tra 0 e 99 ? APPLICO L’OPERATORE MODULO (RESTO) CIOE’ il % PRIMA #include <iostream> using namespace std; int main() { int x,i; for (i=1;i<=10;i++) x = rand() % 100; cout << x << endl; } system("Pause"); DOPO

Numeri tra 0 e N Per generare numeri compresi tra 0 e N-1 applico il modulo di N: X = rand() % N; Per averli invece tra 1 e N basta sommare 1: X = rand() % N + 1;

Esempio X = rand() % 6 + 1; (genera numeri tra 0 e 5) Sommando 1 li ottengo tra 1 e 6 (es. del lancio del dado) 1 2 3 4 5 +1 6

E se li volessi tra 20 e 30 ? I numeri tra 20 e 30 sono 11 Quindi genero un numero tra 0 e 10 e sommo 20 (se è zero diventa 20, se è 10 diventa 30) 1 2 3 4 5 6 7 8 9 10 + 20 20 21 22 23 24 25 26 27 28 29 30

Come evitare di ottenere la stessa sequenza Devo “rimescolare l’urna” da cui vengono estratti i numeri, Con la funzione srand “che accetta come argomento un seme (del tipo unsigned int), che “insemina” la funzione rand, in modo da indurla a generare una diversa sequenza di numeri casuali ad ogni esecuzione del programma, a patto che sia fornito ogni volta un seme diverso. Come ovviare però a questo ultimo inconveniente? Si può fornire come argomento a srand l’orario in quell’istante, letto dall’orologio interno del computer da parte della funzione time” http://www.pierotofy.it/pages/guide_tutorials/C/Generazione_di_numeri_casuali/ PS “I wrote a program for calculating current date and time using function time(NULL). I read this function contains total seconds from 1970.01.01 till now. “

srand(7); srand(17); Escono sequenze diverse, ma a parità di seme, esce SEMPRE LA STESSA, cioè con seme 7 esce SEMPRE 61, 22, 15, 40 …

“Using srand(time(NULL)); Per CAMBIARE IL SEME IN MODO CASUALE, posso usare COME SEME (seed) l’ ora di sistema, che sarà un numero diverso ad ogni esecuzione del programma, permettendo così di ottenere SEQUENZE OGNI VOLTA DIVERSE, perché cambia il seme ogni volta: il valore più aleatorio al quale un programma può accedere è l'istante nel quale viene eseguito: da ciò deriva l'uso dell'argomento time(NULL). “Using srand(time(NULL)); makes use of the computer's internal clock to control the choice of the seed.  Since time is continually changing, the seed is forever changing.  Remember, if the seed number remains the same, the sequence of numbers will be repeated for each run of the program”. PS “I wrote a program for calculating current date and time using function time(NULL). I read this function contains total seconds from 1970.01.01 till now. “

Esercizio 1 Una macchina produce tondini di ferro che dovrebbero avere un diametro di 20 mm. Sono accettati anche tondini che abbiano un diametro di 5 mm in più o in meno e che vengono considerati di seconda scelta. Gli altri vengono scartati come difettosi.   Simulare utilizzando la funzione random una produzione di 1000 tondini con un diametro compreso tra 10 e 30 e indicare quanti sono: I tondini prodotti di prima scelta; Quelli di seconda scelta; Quelli scartati come difettosi.

Esercizio 2 Scrivere un programma che svolga le seguenti operazioni: a. simula una successione di lanci di moneta (Testa o Croce); b. continua a generare lanci di moneta fino a che la condizione di terminazione e' verificata; c. la condizione di terminazione e' la seguente: la sequenza generata contiene almeno 5 esiti uguali consecutivi (es: 5 volte Testa, o 5 volte Croce) d. il programma deve restituire il numero di lanci di moneta che sono stati necessari per verificare la condizione di terminazione (http://wwwold.iit.cnr.it/staff/paolo.santi/LabC/random.htm)