def test_uniform_double(self): rs = RandomGenerator(self.brng(*self.data1['seed'])) assert_array_equal(uniform_from_dsfmt(self.data1['data']), rs.random_sample(1000)) rs = RandomGenerator(self.brng(*self.data2['seed'])) assert_equal(uniform_from_dsfmt(self.data2['data']), rs.random_sample(1000))
def test_reset_state_float(self): rg = RandomGenerator(self.brng(*self.seed)) rg.random_sample(dtype='float32') state = rg.brng.state n1 = rg.random_sample(size=10, dtype='float32') rg2 = RandomGenerator(self.brng()) rg2.brng.state = state n2 = rg2.random_sample(size=10, dtype='float32') assert_((n1 == n2).all())
def test_seed(self): rg = RandomGenerator(self.brng(*self.seed)) rg2 = RandomGenerator(self.brng(*self.seed)) rg.random_sample() rg2.random_sample() if not comp_state(rg.state, rg2.state): for key in rg.state: print(key) print(rg.state[key]) print(rg2.state[key]) assert_(comp_state(rg.state, rg2.state))
def test_uniform_float(self): rg = RandomGenerator(self.brng(12345)) warmup(rg) state = rg.state r1 = rg.random_sample(11, dtype=np.float32) rg2 = RandomGenerator(self.brng()) warmup(rg2) rg2.state = state r2 = rg2.random_sample(11, dtype=np.float32) assert_array_equal(r1, r2) assert_equal(r1.dtype, np.float32) assert_(comp_state(rg.state, rg2.state))
def test_uniform_float(self): rs = RandomGenerator(self.brng(*self.data1['seed'])) vals = uniform32_from_uint(self.data1['data'], self.bits) uniforms = rs.random_sample(len(vals), dtype=np.float32) assert_allclose(uniforms, vals) assert_equal(uniforms.dtype, np.float32) rs = RandomGenerator(self.brng(*self.data2['seed'])) vals = uniform32_from_uint(self.data2['data'], self.bits) uniforms = rs.random_sample(len(vals), dtype=np.float32) assert_allclose(uniforms, vals) assert_equal(uniforms.dtype, np.float32)
class MyPCG64: def __init__(self, seed=0): self.rng = RandomGenerator(PCG64(seed)) #self.rng.seed(seed) def GenerateRandomU01(self, N=1000): res = [] for i in range(N): res.append(self.rng.random_sample()) return res def Generate01Sequence(self, N=1000): res = self.GenerateRandomU01(N=N) return [0 if e < 0.5 else 1 for e in res]
def generate_image(size, prng): allowed_prngs = [ "java", "python", "numpy", "Xoroshiro128", "MT19937", "Philox", "SFC64", "Xorshift1024", "ThreeFry", ] if prng not in allowed_prngs: raise ValueError(f"prng={prng} is not in {allowed_prngs}") arr = np.zeros((size, size)) for i in range(size): if prng == "python": random.seed(i) elif prng == "numpy": np.random.seed(i) elif prng == "java": rnd = javarandom.Random(i) elif prng == "Xoroshiro128": rnd = RandomGenerator(Xoroshiro128()) elif prng == "Xorshift1024": rnd = RandomGenerator(Xorshift1024()) elif prng == "ThreeFry": rnd = RandomGenerator(ThreeFry()) elif prng == "MT19937": rnd = Generator(MT19937()) elif prng == "Philox": rnd = Generator(Philox()) elif prng == "SFC64": rnd = Generator(SFC64()) for j in range(size): if prng == "python": random_number = random.random() elif prng == "numpy": random_number = np.random.random() elif prng == "java": random_number = rnd.nextDouble() elif prng in ["Xoroshiro128", "Xorshift1024", "ThreeFry"]: random_number = rnd.random_sample() elif prng in ["MT19937", "Philox", "SFC64"]: random_number = rnd.random() arr[j, i] = random_number print("{}\t{}\t{}".format(i, arr[0, i], arr[1, i])) imageio.imwrite(f"1000-random-numbers-{prng}.png", arr)
def test_seed(self): rg = RandomGenerator(self.brng(*self.seed)) rg2 = RandomGenerator(self.brng(*self.seed)) rg.random_sample() rg2.random_sample() assert_(comp_state(rg.brng.state, rg2.brng.state))
def test_buffer_reset(self): rs = RandomGenerator(self.brng(*self.data1['seed'])) rs.random_sample(1) assert rs.brng.state['buffer_loc'] != 382 rs.brng.seed(*self.data1['seed']) assert rs.brng.state['buffer_loc'] == 382