changed lhrandom to use the full RAND_MAX limit (more random, after all the low bits...
authorhavoc <havoc@d7cf8633-e32d-0410-b094-e92efae38249>
Thu, 25 Nov 2004 16:19:56 +0000 (16:19 +0000)
committerhavoc <havoc@d7cf8633-e32d-0410-b094-e92efae38249>
Thu, 25 Nov 2004 16:19:56 +0000 (16:19 +0000)
git-svn-id: svn://svn.icculus.org/twilight/trunk/darkplaces@4791 d7cf8633-e32d-0410-b094-e92efae38249

mathlib.h
pr_cmds.c
prvm_cmds.c

index 0231e85..880c51f 100644 (file)
--- a/mathlib.h
+++ b/mathlib.h
@@ -49,7 +49,8 @@ extern vec3_t vec3_origin;
 #define max(A,B) ((A) > (B) ? (A) : (B))
 #endif
 
-#define lhrandom(MIN,MAX) ((rand() & 32767) * (((MAX)-(MIN)) * (1.0f / 32767.0f)) + (MIN))
+//#define lhrandom(MIN,MAX) ((rand() & 32767) * (((MAX)-(MIN)) * (1.0f / 32767.0f)) + (MIN))
+#define lhrandom(MIN,MAX) (((double)rand() / RAND_MAX) * ((MAX)-(MIN)) + (MIN))
 
 #define invpow(base,number) (log(number) / log(base))
 #define log2i(n) ((((n) & 0xAAAAAAAA) != 0 ? 1 : 0) | (((n) & 0xCCCCCCCC) != 0 ? 2 : 0) | (((n) & 0xF0F0F0F0) != 0 ? 4 : 0) | (((n) & 0xFF00FF00) != 0 ? 8 : 0) | (((n) & 0xFFFF0000) != 0 ? 16 : 0))
index 6e021a7..ddf9d45 100644 (file)
--- a/pr_cmds.c
+++ b/pr_cmds.c
@@ -594,11 +594,7 @@ random()
 */
 void PF_random (void)
 {
-       float           num;
-
-       num = (rand ()&0x7fff) / ((float)0x7fff);
-
-       G_FLOAT(OFS_RETURN) = num;
+       G_FLOAT(OFS_RETURN) = lhrandom(0, 1);
 }
 
 /*
index 2ee88b1..e9d9afe 100644 (file)
@@ -559,13 +559,9 @@ float random()
 */
 void VM_random (void)
 {
-       float           num;
-
        VM_SAFEPARMCOUNT(0,VM_random);
 
-       num = (rand ()&0x7fff) / ((float)0x7fff);
-
-       PRVM_G_FLOAT(OFS_RETURN) = num;
+       PRVM_G_FLOAT(OFS_RETURN) = lhrandom(0, 1);
 }
 
 /*
@@ -1136,7 +1132,7 @@ void VM_precache_sound (void)
        s = PRVM_G_STRING(OFS_PARM0);
        PRVM_G_INT(OFS_RETURN) = PRVM_G_INT(OFS_PARM0);
        VM_CheckEmptyString (s);
-       
+
        if(!S_PrecacheSound (s,true, true))
                Con_Printf("VM_precache_sound: Failed to load %s for %s\n", s, PRVM_NAME);
 }