diff options
Diffstat (limited to 'modules/language/python/module/_random.scm')
-rw-r--r-- | modules/language/python/module/_random.scm | 18 |
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)))) |