Skip to content

Instantly share code, notes, and snippets.

@Steffo99
Last active October 19, 2015 15:31
Show Gist options
  • Save Steffo99/6326866041979e6cea16 to your computer and use it in GitHub Desktop.
Save Steffo99/6326866041979e6cea16 to your computer and use it in GitHub Desktop.
#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