浏览代码

don´t need the "+1", the "%" is enough to garantee r<1.

Roberto Ierusalimschy 26 年之前
父节点
当前提交
4fbb2531b3
共有 1 个文件被更改,包括 4 次插入4 次删除
  1. 4 4
      lmathlib.c

+ 4 - 4
lmathlib.c

@@ -1,5 +1,5 @@
 /*
 /*
-** $Id: lmathlib.c,v 1.12 1998/12/28 13:44:54 roberto Exp roberto $
+** $Id: lmathlib.c,v 1.13 1998/12/30 17:22:17 roberto Exp roberto $
 ** Lua standard mathematical library
 ** Lua standard mathematical library
 ** See Copyright Notice in lua.h
 ** See Copyright Notice in lua.h
 */
 */
@@ -154,9 +154,9 @@ static void math_max (void)
 
 
 
 
 static void math_random (void) {
 static void math_random (void) {
-  /* the '%' is needed because on some systems (SunOS!) "rand()" may
-     return a value bigger than RAND_MAX... */
-  double r = (double)(rand()%RAND_MAX) / ((double)RAND_MAX+1.0);
+  /* the '%' avoids the (rare) case of r==1, and is needed also because on
+     some systems (SunOS!) "rand()" may return a value bigger than RAND_MAX */
+  double r = (double)(rand()%RAND_MAX) / (double)RAND_MAX;
   int l = luaL_opt_int(1, 0);
   int l = luaL_opt_int(1, 0);
   if (l == 0)
   if (l == 0)
     lua_pushnumber(r);
     lua_pushnumber(r);