[DGD] Damage Weapons and Stuff (Math and Code)

White, Ben ben.white at dsto.defence.gov.au
Tue Jun 3 04:42:20 CEST 2003


Oops, sorry...  Put the wrong log function...

  mag = sqrt (-2.0 * ln (randf() + 1E-9));
  phase = 2.0 * pi * randf();

  x = mag * cos (phase);
  y = mag * sin (phase);


-----Original Message-----
From: Ben Chambers [mailto:bjchamb at bellsouth.net]
Sent: Tuesday, 3 June 2003 12:06
To: dgd at list.imaginary.com
Subject: Re: [DGD] Damage Weapons and Stuff (Math and Code) 
> 
> 
> Doing timing in C++ resulted in the sin/cos version being 
> slightly faster,
> but the standard deviation was incorrect...
> ----- Original Message -----
> From: "Ben Chambers" <bjchamb at bellsouth.net>
> To: <dgd at list.imaginary.com>
> Sent: Monday, June 02, 2003 10:26 PM
> Subject: Re: [DGD] Damage Weapons and Stuff (Math and Code)
> 
> 
> > yeah, I was looking on line, this version is taken straight 
> from that
> > version but doesn't use the calls to cos/sin... which would 
> be slower...
> > sin/cos or this version?
> >
> > ----- Original Message -----
> > From: "White, Ben" <ben.white at dsto.defence.gov.au>
> > To: <dgd at list.imaginary.com>
> > Sent: Monday, June 02, 2003 10:12 PM
> > Subject: RE: [DGD] Damage Weapons and Stuff (Math and Code)
> >
> >
> > > From: Ben Chambers [mailto:bjchamb at bellsouth.net]
> > > >
> > > > http://www.taygeta.com/random/gaussian.html
> > > >
> > > > The code found there follows:
> > > >          float x1, x2, w, y1, y2;
> > > >
> > > >          do {
> > > >                  x1 = 2.0 * ranf() - 1.0;
> > > >                  x2 = 2.0 * ranf() - 1.0;
> > > >                  w = x1 * x1 + x2 * x2;
> > > >          } while ( w >= 1.0 );
> > > >
> > > >          w = sqrt( (-2.0 * ln( w ) ) / w );
> > > >          y1 = x1 * w;
> > > >          y2 = x2 * w;
> > > >
> > > > As the websites explains, ranf is a function to return a
> > > > random number in
> > > > the range [0, 1].  The problem is the number of calls that
> > > > occur to ranf.
> > > > There is the potential that a lot of calls would be made.
> > > > How would DGD
> > > > handle this?  How fast is the random generation function in DGD?
> > > >
> > >
> > > The area of the square in which the number is being uniformly
> > > generated is 4 (2 * 2).  The area of the circle in which the
> > > numbers are chosen is 3.14159... (pi * r**2).  So you have a
> > > better than 75% chance of getting your number first pop.
> > > This does the same thing as one version I posted before, only
> > > with the looping instead of a cos/sin...
> > >
> > > Ben.
> > >
> > > _________________________________________________________________
> > > List config page:  http://list.imaginary.com/mailman/listinfo/dgd
> > >
> >
> > _________________________________________________________________
> > List config page:  http://list.imaginary.com/mailman/listinfo/dgd
> 
> _________________________________________________________________
> List config page:  http://list.imaginary.com/mailman/listinfo/dgd
> 
_________________________________________________________________
List config page:  http://list.imaginary.com/mailman/listinfo/dgd



More information about the DGD mailing list