File: random

package info (click to toggle)
scheme9 2025.08.12-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 4,080 kB
  • sloc: lisp: 16,752; ansic: 11,869; sh: 806; makefile: 237; sed: 6
file content (21 lines) | stat: -rw-r--r-- 652 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
S9 LIB  (random integer)        ==>  integer
        (random-state integer)  ==>  procedure

        (load-from-library "random.scm")

RANDOM returns a random number in the range [0;INTEGER], where
INTEGER may not be any larger than 2**19 = 524288.

RANDOM-STATE returns a procedure that resembles RANDOM but uses
a user-supplied seed instead of a default one. RANDOM can be passed
a different seed by running:

      (set! random (random-state SEED))

RANDOM-STATE uses a 19-bit linear feedback shift register. Hence
its limited range.

(let* ((a (random 100))
       (b (random 100))
       (c (random 100)))
  (list a b c))           ==>  (5 47 68)