############################################################################
#
#	File:     gauss.icn
#
#	Subject:  Procedures to compute Gaussian distributions
#
#	Author:   Stephen B. Wampler
#
#	Date:     September 19, 1991
#
############################################################################
#
#   This file is in the public domain.
#
############################################################################
#
#   gauss_random(x, f) produces a Gaussian distribution about the value x.
#   The value of f can be used to alter the shape of the Gaussian
#   distribution (larger values flatten the curve...)
#
############################################################################

procedure gauss_random(x, f)

   /f := 1.0		# if f not passed in, default to 1.0

   return gauss() * f + x

end

#   Produce a random value within a Gaussian distribution
#   about 0.0.  (Sum 12 random numbers between 0 and 1,
#   (expected mean is 6.0) and subtract 6 to center on 0.0

procedure gauss()
   local v

   v := 0.0

   every 1 to 12 do v +:= ?0

   return v - 6.0

end
