Julian Fagir <g...@physik.tu-berlin.de> wrote: > > Does anyone has a "generate-pi.c" source code? ... > 1 #include <stdlib.h> > 2 #include <string.h> > 3 #include <stdio.h> > 4 > 5 // Change this for a more accurate result. > 6 long max = 100000000; > 7 double a, b; > 8 double pi; > 9 long counter; > 10 long i; > 11 > 12 int main() { > 13 for (i = 0; i< max; i++) { > 14 a = drand48(); > 15 b = drand48(); > 16 if (a*a + b*b <= 1) > 17 counter++; > 18 } > 19 pi = 4*counter; > 20 > 21 printf("%e\n", pi); > 22 return(0); > 23 } ... > This approximation is stupid ... Just take 'random' numbers and > look whether they are in a circle (that's the a*a + b*b <= 1).
Not stupid, clever. Very clever. I rather doubt it resembles what the OP had in mind, but it is a brilliant example of what can be accomplished when one casts aside any perceived need to adopt a conventional approach. > The detail of this approximation heavily depends on the pseudo-rng > you are using, as does its correctness Perhaps it would be useful in a PRNG test suite? > (e.g., when your 'rng' always returns 10, pi would be computed to > be 10) ... Bad example. If abs(drand48()) always exceeded (0.5 * sqrt(2.0)), a*a + b*b would always exceed 1.0, thus counter would never be incremented and pi would be reported as zero. _______________________________________________ freebsd-questions@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-questions To unsubscribe, send any mail to "freebsd-questions-unsubscr...@freebsd.org"