====== random ======
Return a random integer.
===== Gforth version =====
Variable seed
$10450405 Constant generator
: rnd ( -- n ) seed @ generator um* drop 1+ dup seed ! ;
: random ( n -- 0..n-1 ) rnd um* nip ;
Der ''generator'' wurde ausfaktorisiert. Damit besteht die Möglichkeit, einen anderen ''generator'' zu verwenden. Die Konstante ist nur eine Möglichkeit.
===== Starting Forth version =====
\ Baden: these implementations aren't for serious work
VARIABLE RND \ Holds current result
HERE RND ! \ Possible initialization
: RANDOM ( -- u ) RND @ 31421 * 6927 + DUP RND ! ;
===== Wil Baden's 32-bit version =====
: RANDOM ( -- u ) RND @ 3141592621 * 1+ DUP RND ! ;
\ Return a random integer between 0 and u-1
: CHOOSE ( u -- 0...u-1 ) RANDOM UM* NIP ;
\ Another way of initializing
: RANDOMIZE ( -- ) TIME&DATE 5 0 DO 65599 * + LOOP RND ! ;
----
Tags: ANS-Forth random integer number seed randomize