# use-revolution Digest, Vol 61, Issue 36

Mick Collins mickclns at mac.com
Thu Oct 23 00:21:09 CDT 2008

```Hi, Timothy,
Here are a couple of functions that I think will fit the bill for
you.  The first returns a number in standard normal distribution
(mean 0 and standard deviation 1).  The second returns a number in
normal distribution with mean mu and standard deviation sigma (as
arguments.

They are followed by handlers to print out a histogram for 10000 numbers

function stdNormDist
constant fourG = 4000000000
return sqrt(-2*ln(1-random(fourG)/ fourG))*cos(random(fourG)/
fourG *2*pi)
end stdNormDist

function normDist mu, sigma
return sigma * stdNormDist() + mu
end normDist

on tst
put 10 into sigma
put 100 into mu
repeat with i = 0 to 32
put 0 into hist[i]
end repeat

repeat with i = 1 to 10000
put normDist(mu, sigma)  into nD
put (nD - mu) / sigma into nSDs
put max(0,min(32,round(nSDs*4)+16)) into ndx -- 4 slots per
std dev
end repeat
put printHistLine(hist[0])  into printTmp
repeat with i =1 to 32
put return & printHistLine(hist[i]) after printTmp
end repeat
put printTmp
end tst

function printHistLine histCount
put round(histCount/25) into hCount
return "|" & multiStr("x", hCount) && histCount
end printHistLine

function multiStr str, n
put empty into tmp
repeat n times
put str after tmp
end repeat
return tmp
end multiStr

| 0
| 3
| 2
| 6
| 5
|x 28
|xx 48
|xxxx 88
|xxxxxx 140
|xxxxxxxxx 228
|xxxxxxxxxxxxxx 345
|xxxxxxxxxxxxxxxxxx 447
|xxxxxxxxxxxxxxxxxxxxxxxx 596
|xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 749
|xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 868
|xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 951
|xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 999
|xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 964
|xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 910
|xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 775
|xxxxxxxxxxxxxxxxxxxxxxxx 591
|xxxxxxxxxxxxxxxxxx 461
|xxxxxxxxxxxx 291
|xxxxxxxx 192
|xxxxxx 143
|xxx 84
|xx 41
|x 28
| 12
| 4
| 1
| 0
| 0

> From: Timothy Miller <gandalf at doctorTimothyMiller.com>
> Subject: Gaussian pseudo-random numbers -- math issues

```