From caa987faad6191a2abaf9d2741216ba619359fdb Mon Sep 17 00:00:00 2001 From: Roberto Ierusalimschy Date: Wed, 30 Jul 1997 19:15:18 -0300 Subject: [PATCH] "random" accepts an 'n' to return between 1 and 'n'. --- manual.tex | 10 ++++++---- mathlib.c | 8 ++++++-- 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 #include @@ -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)