def testId(self): # valid calls DcmtRandom(id=20, gen_seed=1) DcmtRandom.range(1, 4, gen_seed=1) DcmtRandomState(id=3000, gen_seed=1) DcmtRandomState.range(100, 103, gen_seed=1) mt_range(4, gen_seed=1) # check that range functions behave like Python range() for func in (DcmtRandom.range, DcmtRandomState.range, mt_range): for args in ((), (1, 2, 3)): self.assertRaises(TypeError, func, *args) self.assertEqual(func(3, 1), []) # error: id < 0 self.assertRaises(DcmtParameterError, DcmtRandom, id=-1, gen_seed=1) self.assertRaises(DcmtParameterError, DcmtRandom.range, -1, 3, gen_seed=1) self.assertRaises(DcmtParameterError, DcmtRandomState, id=-1, gen_seed=1) self.assertRaises(DcmtParameterError, DcmtRandomState.range, -1, 2, gen_seed=1) self.assertRaises(DcmtParameterError, mt_range, -1, 3, gen_seed=1) # error: id > 65535 self.assertRaises(DcmtParameterError, DcmtRandom, id=65536, gen_seed=1) self.assertRaises(DcmtParameterError, DcmtRandom.range, 65535, 65537, gen_seed=1) self.assertRaises(DcmtParameterError, DcmtRandomState, id=65536, gen_seed=1) self.assertRaises(DcmtParameterError, DcmtRandomState.range, 65535, 65537, gen_seed=1) self.assertRaises(DcmtParameterError, mt_range, 65534, 65539, gen_seed=1) self.assertRaises(DcmtParameterError, mt_range, 65536, 65539, gen_seed=1)
def testMtRange(self): start = 0 stop = 3 seed = 100 init_seeds = [4, 5, 6] N = 10 mt_common, mt_unique = mt_range(start, stop, gen_seed=seed) rngs0 = DcmtRandomState.from_mt_range(mt_common, mt_unique) rngs1 = DcmtRandomState.range(start, stop, gen_seed=seed) for rng0, rng1, seed in zip(rngs0, rngs1, init_seeds): rng0.seed(seed) rng1.seed(seed) for rng0, rng1 in zip(rngs0, rngs1): randoms0 = getRandomArray(rng0, N) randoms1 = getRandomArray(rng1, N) self.assert_((randoms0 == randoms1).all())