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!