Propabilistische GNOME-Funktion

Wie mir mein Kommilitone Daniel gerade amüsiert berichtete, gibt es beim gdm [1] (GNOME Display Manager) den Kommando-Parameter –monte-carlo-sqrt2, mit dem man sich die zweite Wurzel von 2 berechnen lassen kann - das ganze mit einem propabilistischen Algorithmus der Monte Carlo Klasse [2]:

if (monte_carlo_sqrt2) {
  calc_sqrt2 ();
  return 0;
}

...

static void
calc_sqrt2 (void)
{
  unsigned long n = 0, h = 0;
  double x;
  printf ("\n");
  for (;;) {
      x = g_random_double_range (1.0, 2.0);
      if (x*x <= 2.0)
          h++;
      n++;
      if ( ! (n & 0xfff)) {
        double sqrttwo = 1.0 + ((double)h)/(double)n;
        printf ("sqrt(2) ~~ %1.10f\t(1 + %lu/%lu) "
          "iteration: %lu \r",
           sqrttwo, h, n, n);
      }
  }
}

Also, Kudos an Daniel und und es sage nochmal einer, dass Programmierer keinen Humor hätten!

Leave a Reply