diff options
Diffstat (limited to 'modules/language/python/module/_random.scm')
-rw-r--r-- | modules/language/python/module/_random.scm | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/modules/language/python/module/_random.scm b/modules/language/python/module/_random.scm new file mode 100644 index 0000000..6e2660a --- /dev/null +++ b/modules/language/python/module/_random.scm @@ -0,0 +1,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)))))) + + |