summaryrefslogtreecommitdiff
path: root/modules/language/python/module/_random.scm
blob: 6e2660a4c1f269a6372f5c7f2e5f4c7543209ff3 (about) (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
(define-module (langauge python module _random)
  #:use-module (oop pf-objects)
  #:export ())

(define-python-class Random ()
  (define seed
    (lambda (self s)
      (rawset self '_state (seed->random-state s))))

  (define setstate
    (lambda (self s)
      (rawset self '_state s)))

  (define getstate
    (lambda (self)
      (aif it (rawref self '_state)
           it
           (let ((ret (copy-random-state)))
             (set self '_state ret)
             ret))))

  (define random
    (lambda (self)
      (let ((x (random:uniform (getstate self))))
        (rawset self '_state (copy-random-state))))))