summaryrefslogtreecommitdiff
path: root/modules/language/python/module/_random.scm
diff options
context:
space:
mode:
Diffstat (limited to 'modules/language/python/module/_random.scm')
-rw-r--r--modules/language/python/module/_random.scm18
1 files changed, 12 insertions, 6 deletions
diff --git a/modules/language/python/module/_random.scm b/modules/language/python/module/_random.scm
index 6e2660a..74b9492 100644
--- a/modules/language/python/module/_random.scm
+++ b/modules/language/python/module/_random.scm
@@ -1,11 +1,14 @@
-(define-module (langauge python module _random)
+(define-module (language python module _random)
#:use-module (oop pf-objects)
- #:export ())
+ #:use-module (language python string)
+ #:export (Random))
+
+(define-syntax-rule (aif it p . l) (let ((it p)) (if p . l)))
(define-python-class Random ()
(define seed
(lambda (self s)
- (rawset self '_state (seed->random-state s))))
+ (rawset self '_state (seed->random-state (format #f "~a" s)))))
(define setstate
(lambda (self s)
@@ -15,13 +18,16 @@
(lambda (self)
(aif it (rawref self '_state)
it
- (let ((ret (copy-random-state)))
+ (let ((ret (random-state-from-platform)))
(set self '_state ret)
ret))))
+ (define getrandbits '(no))
(define random
(lambda (self)
- (let ((x (random:uniform (getstate self))))
- (rawset self '_state (copy-random-state))))))
+ (set! *random-state* (getstate self))
+ (let ((x (random:uniform)))
+ (rawset self '_state *random-state*)
+ x))))