Last active
October 19, 2015 15:31
-
-
Save Steffo99/6326866041979e6cea16 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <iostream> | |
#include <random> //rand() restituisce un numero da 0 a RAND_MAX | |
#include <time.h> //Prendiamo il seme del numero casuale dall'ora | |
#include <math.h> //Serve per le potenze e per i valori assoluti | |
using namespace std; | |
int main() | |
{ | |
srand(time(0) + 1); //Seleziona un seme per rand() in base all'ora | |
long long int granelli = 1000000; //Numero di granelli da lanciare | |
int daeffettuare = 3; //Numero di prove da effettuare | |
double scarto = 0; //Scarto quadratico medio | |
for(int prova = 0; prova < daeffettuare; prova++) | |
{ | |
long long int cerchio = 0; //Numero di granelli entrati nel cerchio | |
cout << endl << "Prova " << prova + 1 << endl; | |
for(int lanci = 0; lanci < granelli; lanci++) | |
{ | |
//Troviamo un numero casuale tra 0 e 1 dividendo il numero dato da rand() per il massimo valore possibile | |
float x = static_cast<float>(rand()) / static_cast<float>(RAND_MAX); | |
float y = static_cast<float>(rand()) / static_cast<float>(RAND_MAX); | |
//Possiamo evitare di fare la radice perchè se ciò che c'è al suo interno è minore di 1 anche essa è minore di 1 | |
if(x*x + y*y <= 1) | |
{ | |
cerchio++; | |
} | |
} | |
//Calcolo il pigreco e lo scarto quadratico medio | |
double pi = static_cast<float>(cerchio) / static_cast<float>(granelli) * 4; | |
scarto = scarto + pow(abs(3.1415926535 - pi), 2); | |
} | |
cout << endl << "Scarto quadratico medio: " << pow(scarto / daeffettuare, 0.5) << endl; | |
cout << "Clock: " << clock() << endl; | |
cin.ignore(); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment