From ed88ce2b8cbe4beefc930eca3f773997d649e23c Mon Sep 17 00:00:00 2001 From: havoc Date: Thu, 25 Nov 2004 16:19:56 +0000 Subject: [PATCH] changed lhrandom to use the full RAND_MAX limit (more random, after all the low bits are the most predictable), and made the random() qc builtin use lhrandom git-svn-id: svn://svn.icculus.org/twilight/trunk/darkplaces@4791 d7cf8633-e32d-0410-b094-e92efae38249 --- mathlib.h | 3 ++- pr_cmds.c | 6 +----- prvm_cmds.c | 8 ++------ 3 files changed, 5 insertions(+), 12 deletions(-) diff --git a/mathlib.h b/mathlib.h index 0231e85a..880c51f6 100644 --- 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)) diff --git a/pr_cmds.c b/pr_cmds.c index 6e021a72..ddf9d458 100644 --- 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); } /* diff --git a/prvm_cmds.c b/prvm_cmds.c index 2ee88b1c..e9d9afe6 100644 --- a/prvm_cmds.c +++ b/prvm_cmds.c @@ -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); } -- 2.39.2