15 #include "absl/random/seed_sequences.h"
20 #include "gmock/gmock.h"
21 #include "gtest/gtest.h"
22 #include "absl/random/internal/nonsecure_base.h"
23 #include "absl/random/random.h"
26 TEST(SeedSequences, Examples) {
42 std::mt19937 random(seed_seq);
49 using ExampleNonsecureURBG =
53 ExampleNonsecureURBG rng;
59 std::mt19937_64{seq_from_rng};
70 std::mt19937_64{seq_from_rng};
81 std::mt19937_64{seq_from_rng};
86 std::random_device urandom;
92 std::mt19937_64{seq_from_rng};
95 template <
typename URBG>
96 void TestReproducibleVariateSequencesForNonsecureURBG() {
97 const size_t kNumVariates = 1000;
105 URBG
child(reusable_seed);
106 for (
auto& variate : variates) {
112 URBG
child(reusable_seed);
113 for (
auto& variate : variates) {
120 TestReproducibleVariateSequencesForNonsecureURBG<absl::InsecureBitGen>();
124 TestReproducibleVariateSequencesForNonsecureURBG<absl::BitGen>();