Implement MT19937 for challenge 21.
This commit is contained in:
18
src/set3.rs
18
src/set3.rs
@@ -2,6 +2,7 @@ use crate::bytes::Bytes;
|
||||
use crate::bytes_base64::BytesBase64;
|
||||
use crate::cbc;
|
||||
use crate::ctr;
|
||||
use crate::mt19937;
|
||||
use rand::Rng;
|
||||
use std::cell::RefCell;
|
||||
use std::collections::HashMap;
|
||||
@@ -301,5 +302,20 @@ pub fn challenge20() {
|
||||
}
|
||||
|
||||
pub fn challenge21() {
|
||||
println!("[xxxx] Challenge 21: TBD");
|
||||
// Implement the MT19937 Mersenne Twister RNG
|
||||
|
||||
let expected: Vec<u32> = vec![
|
||||
0xD091BB5C, 0x22AE9EF6, 0xE7E1FAEE, 0xD5C31F79, 0x2082352C, 0xF807B7DF, 0xE9D30005,
|
||||
0x3895AFE1, 0xA1E24BBA, 0x4EE4092B,
|
||||
];
|
||||
let mut mt = mt19937::MT19937::new();
|
||||
mt.seed(5489);
|
||||
for i in 0..expected.len() {
|
||||
assert_eq!(mt.extract_number(), expected[i]);
|
||||
}
|
||||
println!("[okay] Challenge 21: Implemented MT19937");
|
||||
}
|
||||
|
||||
pub fn challenge22() {
|
||||
println!("[xxxx] Challenge 22: TBD!");
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user