+# This is all encapsulated not just for logging but because someday
+# we'll probably want to replace it with something like an LCG that
+# can be forward-ported off Python
+
+import random
+
+class randomizer:
+ @staticmethod
+ def withprob(p):
+ return random.random() < p
+
+ @staticmethod
+ def randrange(*args):
+ return random.randrange(*args)
+
+ @staticmethod
+ def real(*args):
+ v = random.random()
+ if len(args) == 1:
+ v *= args[0] # from [0, args[0])
+ elif len(args) == 2:
+ v = args[0] + v*(args[1]-args[0]) # from [args[0], args[1])
+ return v
+
+ @staticmethod
+ def seed(n):
+ random.seed(n)
+