\ -*- mode: forth -*-
\ $Id: random.gforth,v 1.6 2001/06/25 14:20:38 doug Exp $
\ http://www.bagley.org/~doug/shootout/
\ from Jorge Acereda Maciá
0. argc @ 1- arg >number 2drop drop constant NUM
: FIM 1e 139968e f/ POSTPONE FLITERAL ; immediate
: IA 3877 POSTPONE LITERAL ; immediate
: IC 29573 POSTPONE LITERAL ; immediate
: IM 139968 POSTPONE LITERAL ; immediate
42 value seed
: format-float
f$ dup >r 0<
IF '0 emit
ELSE scratch r@ min type r@ precision - zeros THEN
'. emit r@ negate zeros
scratch r> 0 max /string 0 max -zeros type ;
: gen-random
s" seed IA * IC + IM mod dup to seed " evaluate
s" 0 d>f f* FIM f* " evaluate ; immediate
: main
10 SET-PRECISION
0e NUM 0 do fdrop 100e gen-random loop format-float cr ;
main bye