int main() { typedef qfcl::random::cpp_rand ENG; typedef qfcl::random::normal_box_muller_polar<> DIST1; typedef qfcl::random::normal_box_muller<> DIST2; typedef qfcl::random::normal_inversion<> DIST3; ENG eng; DIST1 dist1; DIST2 dist2; DIST3 dist3; qfcl::random::variate_generator< ENG, DIST1 > rng1(eng, dist1); qfcl::random::variate_generator< ENG, DIST2 > rng2(eng, dist2); qfcl::random::variate_generator< ENG, DIST3 > rng3(eng, dist3); for (int i=0; i<10; ++i) { std::cout << rng1() << " " << rng2() << " " << rng3() << std::endl; } return 0; }
TEST(AESCTRDRNG, SeedConsistency) { AESCTRDRBG rng1("seed1", "seed1") ; AESCTRDRBG rng2("seed1", "seed1") ; AESCTRDRBG rng3("seed2", "seed1") ; AESCTRDRBG rng4("seed1", "seed2") ; AESCTRDRBG rng5("seed2", "seed2") ; AESCTRDRBG rng6("seed2", "seed2") ; std::vector<uint8_t> bits[6] ; for(int r=0;r<5;r++) { std::vector<uint8_t> tmp ; tmp = rng1.GetBits(128) ; bits[0].insert(bits[0].end(), tmp.begin(), tmp.end()) ; tmp = rng2.GetBits(128) ; bits[1].insert(bits[1].end(), tmp.begin(), tmp.end()) ; tmp = rng3.GetBits(128) ; bits[2].insert(bits[2].end(), tmp.begin(), tmp.end()) ; tmp = rng4.GetBits(128) ; bits[3].insert(bits[3].end(), tmp.begin(), tmp.end()) ; tmp = rng5.GetBits(128) ; bits[4].insert(bits[4].end(), tmp.begin(), tmp.end()) ; tmp = rng6.GetBits(128) ; bits[5].insert(bits[5].end(), tmp.begin(), tmp.end()) ; } ASSERT_EQ(bits[0], bits[1]) ; ASSERT_EQ(bits[4], bits[5]) ; ASSERT_NE(bits[1], bits[2]) ; ASSERT_NE(bits[1], bits[3]) ; ASSERT_NE(bits[1], bits[4]) ; ASSERT_NE(bits[2], bits[3]) ; ASSERT_NE(bits[2], bits[4]) ; ASSERT_NE(bits[3], bits[4]) ; }