[nexuiz-commits] r8243 - trunk/data/qcsrc/common

DONOTREPLY at icculus.org DONOTREPLY at icculus.org
Sun Nov 8 07:23:38 EST 2009


Author: div0
Date: 2009-11-08 07:23:38 -0500 (Sun, 08 Nov 2009)
New Revision: 8243

Modified:
   trunk/data/qcsrc/common/util.qc
Log:
simpler gaussian distribution code


Modified: trunk/data/qcsrc/common/util.qc
===================================================================
--- trunk/data/qcsrc/common/util.qc	2009-11-08 11:21:23 UTC (rev 8242)
+++ trunk/data/qcsrc/common/util.qc	2009-11-08 12:23:38 UTC (rev 8243)
@@ -1668,7 +1668,7 @@
 float gsl_ran_gaussian_lastvalue_set;
 float gsl_ran_gaussian(float sigma)
 {
-	float x, y, r2;
+	float a, b;
 	if(gsl_ran_gaussian_lastvalue_set)
 	{
 		gsl_ran_gaussian_lastvalue_set = 0;
@@ -1676,16 +1676,10 @@
 	}
 	else
 	{
-		do
-		{
-			x = -1 + 2 * random();
-			y = -1 + 2 * random();
-			r2 = x * x + y * y;
-		}
-		while(r2 > 1 || r2 == 0);
-		r2 = sqrt(-2 * log(r2) / r2);
-		gsl_ran_gaussian_lastvalue = x * r2;
+		a = random() * 2 * M_PI;
+		b = sqrt(-2 * log(random()));
+		gsl_ran_gaussian_lastvalue = cos(a) * b;
 		gsl_ran_gaussian_lastvalue_set = 1;
-		return sigma * y * r2;
+		return sigma * sin(a) * b;
 	}
 }



More information about the nexuiz-commits mailing list