extern crate pcg_rand;
extern crate rand;
use pcg_rand::seeds::PcgSeeder;
use pcg_rand::Pcg32Basic;
use rand::{distributions::Alphanumeric, Rng, SeedableRng};
#[test]
fn pcg_basic_unseeded() {
let mut ra: Pcg32Basic = Pcg32Basic::new_unseeded();
let mut rb: Pcg32Basic = Pcg32Basic::new_unseeded();
assert_eq!(
ra.sample_iter(&Alphanumeric).take(100).collect::<Vec<_>>(),
rb.sample_iter(&Alphanumeric).take(100).collect::<Vec<_>>()
);
}
#[test]
fn pcg_basic_seed_match() {
let mut ra: Pcg32Basic = SeedableRng::from_seed(PcgSeeder::seed_with_stream(11, 12));
let mut rb: Pcg32Basic = SeedableRng::from_seed(PcgSeeder::seed_with_stream(11, 12));
assert_eq!(
ra.sample_iter(&Alphanumeric).take(100).collect::<Vec<_>>(),
rb.sample_iter(&Alphanumeric).take(100).collect::<Vec<_>>()
);
}
#[test]
fn pcg_basic_seq_diff() {
let mut ra: Pcg32Basic = SeedableRng::from_seed(PcgSeeder::seed_with_stream(11, 12));
let mut rb: Pcg32Basic = SeedableRng::from_seed(PcgSeeder::seed_with_stream(11, 14));
assert!(
ra.sample_iter(&Alphanumeric).take(100).collect::<Vec<_>>()
!= rb.sample_iter(&Alphanumeric).take(100).collect::<Vec<_>>()
);
}
#[test]
#[should_panic]
fn pcg_basic_seq_aliasing() {
let mut ra: Pcg32Basic = SeedableRng::from_seed(PcgSeeder::seed_with_stream(11, 12));
let mut rb: Pcg32Basic = SeedableRng::from_seed(PcgSeeder::seed_with_stream(11, 13));
assert!(
ra.sample_iter(&Alphanumeric).take(100).collect::<Vec<_>>()
!= rb.sample_iter(&Alphanumeric).take(100).collect::<Vec<_>>()
);
}
#[test]
fn pcg_basic_seed_diff() {
let mut ra: Pcg32Basic = SeedableRng::from_seed(PcgSeeder::seed_with_stream(11, 11));
let mut rb: Pcg32Basic = SeedableRng::from_seed(PcgSeeder::seed_with_stream(12, 11));
assert!(
ra.sample_iter(&Alphanumeric).take(100).collect::<Vec<_>>()
!= rb.sample_iter(&Alphanumeric).take(100).collect::<Vec<_>>()
);
}