Pi greco

paulus1969:
Dopo tutta questa discussione, però, adesso il programma scriviamolo e vediamo cosa viene fuori.

Uh, ma, ripeto, il listato del mio post #27 lo avete visto/verificato? :o
Io dopo averlo scritto ovviamente non l'ho più provato dando per scontato che l'OP lo avrebbe fatto, ma se ora parlate del programma ve lo ripropongo: ;D

#define RAGGIO 100
unsigned long x = 0;
unsigned long y = 0;
unsigned long r;
unsigned long r2;
unsigned int tot = 0;
unsigned int hit = 0;
float p;

void setup(){
  Serial.begin(9600);
  randomSeed(analogRead(0));
  // Per evitare di calcolare radici quadrate e rendere
  // lo sketch più efficiente, uso il quadrato del raggio
  r2 = RAGGIO * RAGGIO;
}

void loop() {
  x = random(RAGGIO);
  y = random(RAGGIO);
  //Serial.print(x);
  //Serial.print(",");
  //Serial.println(y);
  r = x*x + y*y;
  ++tot;
  if ( r <= r2 )
    ++hit;
  p = 4.0 * hit / tot;
  Serial.println(p);
  delay(100); // 10 campioni al secondo
}