| Philip W. Brooks ( @ 2005-10-12 16:02:00 |
| Entry tags: | prolog, silly |
C is BAD
As part of a homework assignment a few years ago, I needed to be able to use Prolog to generate random numbers from a Gaussian (bell curve) distribution with a given mean and standard deviation. A friend found the code that does this in the Python standard library, so I translated it into Prolog.
When SWI Prolog 5.2.10 decompiles a compiled program, it names the first variable to occur A, the second B, and so on. Part of my translation of the Python looked like this in the source file:
When compiled and displayed, it reads:gaussian(SD,Mean,R) :- gaussian_z(Z), !, retractall(gaussian_z(_)), R is Mean + SD * Z.
gaussian(A, B, C) :-
gaussian_z(D), !,
retractall(gaussian_z(E)),
C is B+A*D.In spite of its apparent dislike of the language, I've since translated this from Prolog into C (really, C++) for a quick and dirty Gaussian random number generator for use in SAGA.