summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoberto Ierusalimschy <roberto@inf.puc-rio.br>1997-07-30 19:15:18 -0300
committerRoberto Ierusalimschy <roberto@inf.puc-rio.br>1997-07-30 19:15:18 -0300
commitcaa987faad6191a2abaf9d2741216ba619359fdb (patch)
treece14080b8ed31afc2f9207d10c41f8df40b70816
parent0892f0e5b75c51f1fee07276a3ba13301b83409e (diff)
downloadlua-github-caa987faad6191a2abaf9d2741216ba619359fdb.tar.gz
"random" accepts an 'n' to return between 1 and 'n'.
-rw-r--r--manual.tex10
-rw-r--r--mathlib.c8
2 files changed, 12 insertions, 6 deletions
diff --git a/manual.tex b/manual.tex
index 19f4e34a..fb6a2c00 100644
--- a/manual.tex
+++ b/manual.tex
@@ -1,4 +1,4 @@
-% $Id: manual.tex,v 2.10 1997/07/02 17:09:48 roberto Exp roberto $
+% $Id: manual.tex,v 2.11 1997/07/04 22:35:38 roberto Exp roberto $
\documentstyle[fullpage,11pt,bnf]{article}
@@ -38,7 +38,7 @@ Waldemar Celes
\tecgraf\ --- Computer Science Department --- PUC-Rio
}
-\date{\small \verb$Date: 1997/07/02 17:09:48 $}
+\date{\small \verb$Date: 1997/07/04 22:35:38 $}
\maketitle
@@ -2085,8 +2085,10 @@ Both can be used with an unlimited number of arguments.
The functions \verb|random| and \verb|randomseed| are interfaces to
the simple random generator functions \verb|rand| and \verb|srand|,
provided by ANSI C.
-The function \verb|random| returns pseudo-random numbers in the
-range \Math{[0,1)}.
+The function \verb|random|, when called without arguments,
+returns a pseudo-random real number in the range \Math{[0,1)}.
+When called with a number \Math{n},
+returns a pseudo-random integer in the range \Math{[1,n]}.
\subsection{I/O Facilities} \label{libio}
diff --git a/mathlib.c b/mathlib.c
index bb33db08..3be26b67 100644
--- a/mathlib.c
+++ b/mathlib.c
@@ -3,7 +3,7 @@
** Mathematics library to LUA
*/
-char *rcs_mathlib="$Id: mathlib.c,v 1.24 1997/06/09 17:30:10 roberto Exp roberto $";
+char *rcs_mathlib="$Id: mathlib.c,v 1.25 1997/06/19 18:03:04 roberto Exp roberto $";
#include <stdlib.h>
#include <math.h>
@@ -171,7 +171,11 @@ static void math_rad (void)
static void math_random (void)
{
- lua_pushnumber((double)(rand()%RAND_MAX) / (double)RAND_MAX);
+ double r = (double)(rand()%RAND_MAX) / (double)RAND_MAX;
+ if (lua_getparam(1) == LUA_NOOBJECT)
+ lua_pushnumber(r);
+ else
+ lua_pushnumber((int)(r*luaL_check_number(1)) + 1);
}
static void math_randomseed (void)