+# Log the results of pulling random numbers so we can check determinism.
+
+import traceback
+
+def withprob(p):
+ v = random.random()
+ logfp.write("# withprob(%s) -> %f (%s) at %s\n" % (p, v, v<p, traceback.extract_stack()[1][1:]))
+ return v < p
+
+def randrange(*args):
+ v = random.randrange(*args)
+ logfp.write("# randrange%s -> %s at %s\n" % (args, v, traceback.extract_stack()[1][1:]))
+ return v
+
+def randreal(*args):
+ v = random.random()
+ if len(args) == 1:
+ v *= args[0] # returns from [0, a1)
+ elif len(args) == 2:
+ v = args[0] + v*args[1] # returns from [a1, a2)
+ logfp.write("# randreal%s -> %s at %s\n" % (args, v, traceback.extract_stack()[1][1:]))
+ return v
+