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
      add 1 to hist[ndx]
   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 <[EMAIL PROTECTED]>
Subject: Gaussian pseudo-random numbers -- math issues


_______________________________________________
use-revolution mailing list
[email protected]
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution

Reply via email to