/*
Sia dato un quadrato di lato 2 nel quale è inscritto un cerchio di raggio 1.
L'area del quadrato è pari a 4 e l'area del cerchio pari a pi_greco.
Lancio a caso N volte una biglia puntiforme sul quadrato e conto quante volte
la biglia cade dentro il cerchio e quante fuori dal cerchio.
Posso trovare una stima del numero pi_greco osservando la frequenza con cui la biglia cade dentro al cerchio?
Il valore che trovi per pi_greco di quanto si discosta dalla costante Math.PI di Java?
*/
import javax.swing.JOptionPane;
class ExArray_09 {
public static void main(String[] args) {
long N = Long.parseLong(
JOptionPane.showInputDialog("Numero di lanci?\n(Digitare un numero da almeno 50000 in su (Es. 100000 oppure 500000)"));
double AreaCerchio = Math.PI,
AreaQuadrato = 4.0;
long tot = 0; //totalizza biglia nel quadrato
for (long i=0; i<N; i++)
if ((Math.random() * AreaQuadrato) > AreaCerchio) tot++;
double percQuadrato, //% di biglie nel quadrato
percCerchio, //% di biglie nel cerchio (per differenza)
statAreaCerchio; //% stimata di area occupata dal cerchio sulla base dei lanci
percQuadrato = ((double) tot / N) * 100;
percCerchio = 100 - percQuadrato;
statAreaCerchio = AreaQuadrato * percCerchio / 100; //sarà un valore vicino a pigreco
// stampa
System.out.println("Su " + N +" lanci, la biglia e' caduta nel quadrato " + tot +
" volte (" + percQuadrato + "%)");
System.out.println("\nQuindi si e' stimato che il cerchio inscritto dentro il quadrato ricopra un area del " +
percCerchio + "%, che rapportata all'area del quadrato (" + AreaQuadrato +
") e' di circa " + statAreaCerchio);
System.out.println("Questo valore e' una stima del numero pigreco!");
System.exit(0);
}
}