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.scm27
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))))))
+
+