diff --git a/manual.tex b/manual.tex index e210a039..b3e37013 100644 --- a/manual.tex +++ b/manual.tex @@ -1,4 +1,4 @@ -% $Id: manual.tex,v 1.6 1996/02/05 21:32:19 roberto Exp roberto $ +% $Id: manual.tex,v 1.7 1996/02/09 16:37:58 roberto Exp roberto $ \documentstyle[A4,11pt,bnf]{article} @@ -32,7 +32,7 @@ Waldemar Celes Filho Departamento de Inform\'atica --- PUC-Rio } -\date{\small \verb$Date: 1996/02/05 21:32:19 $} +\date{\small \verb$Date: 1996/02/09 16:37:58 $} \maketitle @@ -1293,9 +1293,10 @@ The library provides the following functions: \Deffunc{atan2}\Deffunc{ceil}\Deffunc{cos}\Deffunc{floor} \Deffunc{log}\Deffunc{log10}\Deffunc{max}\Deffunc{min} \Deffunc{mod}\Deffunc{sin}\Deffunc{sqrt}\Deffunc{tan} +\Deffunc{random}\Deffunc{randomseed} \begin{verbatim} -abs acos asin atan atan2 ceil cos floor -log log10 max min mod sin sqrt tan +abs acos asin atan atan2 ceil cos floor log log10 +max min mod sin sqrt tan random randomseed \end{verbatim} Most of them are only interfaces to the homonymous functions in the C library, @@ -1309,6 +1310,12 @@ Both can be used with an unlimited number of arguments. The function \verb'mod' is equivalent to the \verb'%' operator in C. +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 +$[0,1)$. + \subsection{I/O Facilities} \label{libio} diff --git a/mathlib.c b/mathlib.c index 1092052a..cf5b6a8a 100644 --- a/mathlib.c +++ b/mathlib.c @@ -3,9 +3,9 @@ ** Mathematics library to LUA */ -char *rcs_mathlib="$Id: mathlib.c,v 1.12 1995/10/09 12:48:38 roberto Exp roberto $"; +char *rcs_mathlib="$Id: mathlib.c,v 1.13 1995/11/10 17:54:31 roberto Exp roberto $"; -#include /* NULL */ +#include #include #include "lualib.h" @@ -184,6 +184,18 @@ static void math_rad (void) lua_pushnumber (d/180.*PI); } +static void math_random (void) +{ + lua_pushnumber((double)(rand()%RAND_MAX) / (double)RAND_MAX); +} + +static void math_randomseed (void) +{ + srand(lua_check_number(1, "randomseed")); +} + + + /* ** Open math library */ @@ -208,5 +220,8 @@ void mathlib_open (void) lua_register ("exp", math_exp); lua_register ("deg", math_deg); lua_register ("rad", math_rad); + lua_register ("random", math_random); + lua_register ("randomseed", math_randomseed); + old_pow = lua_lockobject(lua_setfallback("arith", math_pow)); }