[Search for users] [Overall Top Noters] [List of all Conferences] [Download this site]

Conference rusure::math

Title:Mathematics at DEC
Moderator:RUSURE::EDP
Created:Mon Feb 03 1986
Last Modified:Fri Jun 06 1997
Last Successful Update:Fri Jun 06 1997
Number of topics:2083
Total number of notes:14613

1933.0. "The Normal Curve and Simulation" by POLAR::WALSHM () Thu Feb 09 1995 18:37

    G'day all!  I and a friend are writing a simulation program, and we
    want to randomize a normal distribution.  What is the inverse
    cumulative function for the normal curve?  (In other words, we
    randomize a uniform variable between 0 and 1, feed it to the function,
    and get a normal variable as output.)
    
    Or would it just be easier to approximate and use a lookup table?
    
    Matt
T.RTitleUserPersonal
Name
DateLines
1933.1RUSURE::EDPAlways mount a scratch monkey.Thu Feb 09 1995 18:498
    See topic 938.
    
    
    				-- edp
    
    
Public key fingerprint:  8e ad 63 61 ba 0c 26 86  32 0a 7d 28 db e7 6f 75
To find PGP, read note 2688.4 in Humane::IBMPC_Shareware.
1933.2But why two variables?POLAR::WALSHMFri Feb 10 1995 12:524
    Thanks for the pointer.  I don't understand, though, why it's necessary
    to randomize two variables.  Is there no single-variable function that
    would accomplish the same end?
    								Matt
1933.3RTL::GILBERTFri Feb 10 1995 14:403
The bulk of the computation _isn't_ in the creation of the two (uniform)
random variables -- it's in the subsequent calculations, which are apparently
simplified when expressed in terms of two random variables.
1933.4WRKSYS::ROTHGeometry is the real life!Sat Feb 11 1995 20:3827
    Re .2

    It isn't necessary to generate two variables, but doing so gives
    an analytically simple way to generate a pair of normal variates
    for those two uniforms you generated.

    A much faster way to approach the problem is to use "rejection",
    where you generate a uniformly distributed point in two dimensions,
    and throw it away and try again if it lies outside your desired
    distribution function curve (as if on a piece of graph paper.)

    If you break the curve up in simple to approximate pieces, this can
    be *very* fast.  That's the idea behind fast library routines.

    The book Numerical Recipes discusses this a little, but I don't know
    if they have a really fast normal variate generator.

    Note that yet another way is to generate several uniform variates
    and just add them!  The n-fold convolution of the uniforms
    gives a (binomial) approximation to a Gaussian, or viewed another way,
    Gaussians arise because of processes where a bunch of other variates
    are implicitly added together.  If your uniform generator is fast,
    this is not half bad.

    The approximate distrubtion curve this gives is called a "unform B-spline".

    - Jim