{version = 3.17; (* of normal.p 1994 sep 5} (* begin module describe.normal *) (* name normal: generate normally distributed random numbers synopsis normal(normalp:in, data: out, output: out) files normalp: parameter file controlling the program. Two numbers, one per line: seed: random seed to start the process total: the number of numbers to generate data: This is a set of numbers which should have Gaussian distribution if the random number generator is a reasonable one. It will be N(0,1), a normal distribution with mean 0 and standard deviation 1. genhisp: control file for the genhis histogram plotting program. output: messages to the user description Test of a random number generator by creating a gaussian distribution of numbers for plotting by genhis. Method: if U is a member of the set [0..1] and Un and Un+1 are two members, then define theta = Un 2 pi r = sqrt(-2 ln(Un+1)) then when these polar coordinates are converted to Cartesian coordinates, one gets two independent Normally distributed numbers, with mean 0 and standard deviation 1. To get other standard deviations multiply by a constant, and to get other means, add a constant. The proof was from a friend; I only have sketch notes at the moment. I'm sure it is available in standard texts. However, it works, as shown by the example. example seed := 0.5; total := 10000; The mean was 0.00 (to two places) and the standard deviation was 1.01. see also gentst.p, tstrnd.p, genhis.p author Tom Schneider National Cancer Institute Laboratory of Mathematical Biology Frederick, Maryland toms@ncifcrf.gov bugs none known *) (* end module describe.normal *) {This manual page was created by makman 1.44}{created by htmlink 1.55}