From 5a05b04237cc6142874568ba046aa4e84541c16b Mon Sep 17 00:00:00 2001 From: Gertjan van den Burg Date: Tue, 11 Oct 2016 23:36:49 +0200 Subject: simplify package structure --- Python/SyncRNG.py | 48 ------------------------------------------------ SyncRNG/__init__.py | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 48 insertions(+), 48 deletions(-) delete mode 100644 Python/SyncRNG.py create mode 100644 SyncRNG/__init__.py diff --git a/Python/SyncRNG.py b/Python/SyncRNG.py deleted file mode 100644 index 0ab4c06..0000000 --- a/Python/SyncRNG.py +++ /dev/null @@ -1,48 +0,0 @@ -""" -Simple interface to SyncRNG. This file defines a SyncRNG object which can be -used to seed and pull numbers from the RNG. - -""" - -from __future__ import division - -from copy import deepcopy -from warnings import warn as _warn - -import syncrng - -class SyncRNG(object): - - def __init__(self, seed=0): - self.BPF = 32 - self.seed = seed - self.state = syncrng.seed(seed) - - def randi(self): - tmp = syncrng.rand(self.state) - self.state = tmp[:-1] - return(tmp[-1]) - - def rand(self): - return self.randi() * 2.3283064365387e-10 - - def randbelow(self, n): - maxsize = 1<= maxsize: - _warn("Underlying random generator does not supply \n" - "enough bits to choose from a population range this " - "large.\n") - return int(self.rand() * n) - rem = maxsize % n - limit = (maxsize - rem) / maxsize - r = self.rand() - while r >= limit: - r = self.rand() - return int(r*maxsize) % n - - def shuffle(self, x): - y = deepcopy(x) - for i in reversed(range(1, len(y))): - j = self.randbelow(i+1) - y[i], y[j] = y[j], y[i] - return y diff --git a/SyncRNG/__init__.py b/SyncRNG/__init__.py new file mode 100644 index 0000000..0ab4c06 --- /dev/null +++ b/SyncRNG/__init__.py @@ -0,0 +1,48 @@ +""" +Simple interface to SyncRNG. This file defines a SyncRNG object which can be +used to seed and pull numbers from the RNG. + +""" + +from __future__ import division + +from copy import deepcopy +from warnings import warn as _warn + +import syncrng + +class SyncRNG(object): + + def __init__(self, seed=0): + self.BPF = 32 + self.seed = seed + self.state = syncrng.seed(seed) + + def randi(self): + tmp = syncrng.rand(self.state) + self.state = tmp[:-1] + return(tmp[-1]) + + def rand(self): + return self.randi() * 2.3283064365387e-10 + + def randbelow(self, n): + maxsize = 1<= maxsize: + _warn("Underlying random generator does not supply \n" + "enough bits to choose from a population range this " + "large.\n") + return int(self.rand() * n) + rem = maxsize % n + limit = (maxsize - rem) / maxsize + r = self.rand() + while r >= limit: + r = self.rand() + return int(r*maxsize) % n + + def shuffle(self, x): + y = deepcopy(x) + for i in reversed(range(1, len(y))): + j = self.randbelow(i+1) + y[i], y[j] = y[j], y[i] + return y -- cgit v1.2.3