--> cat Cible.java
/* définition de la classe Cible */
class Cible {
private int dedans; // variable d'instance privée
Cible( ) { dedans = 0;} // constructeur d'une cible
/* pour demander la valeur de sa variable dedans à une cible */
int valDedans( ) { return dedans;}
/* méthode de classe privée de la classe Cible */
private static double f(double x){
return Math.sqrt(1 - (x * x));}
/* méthode d'instance public correspondant au lancer d'une flèche */
public void lancer(){
/* deux nombres sont tirés au sort dans l'intervalle [0:1[ */
/* ils correspondent à l'impact de la fléche dans la cible */
double u = Math.random();
double v = Math.random();
/* si on est dans la cible, celle-ci comptabilise le tir */
if( v <= f(u)) dedans ++;
}
}
--> cat Pi.java
/* application utilisant une cible */
import fr.jussieu.script.*;
class Pi {
private static int serieDeLancers (int n) {
Cible cible = new Cible(); // on acquiert une nouvelle cible
/* on effectue n lancers sur la cible */
for (int i = 0; i < n; i++) cible.lancer();
/* on demande le score à la cible et on le renvoie */
return cible.valDedans();
}
public static void main(String[ ] st){
int nbLancers, score;
double pi;
/* on décode le premier paramètre -> nombre de lancers */
nbLancers = Deug.stringToInt(st[0]);
/* on déduit du score la valeur de PI */
score = serieDeLancers(nbLancers);
pi = 4 * ((double)score / nbLancers);
Deug.println("PI = " + pi);
}
}
--> javac Pi.java Cible.java
--> java Pi 100000
PI = 3.14452
--> java Pi 1234567
PI = 3.1409328128809535
-->
|