Skip to content

Commit c1d7dbf

Browse files
committed
Isaac64: shorten seeds and update results
The planned switch to 256-bit byte array seeds does not allow such long seeds.
1 parent 3a63497 commit c1d7dbf

File tree

1 file changed

+26
-22
lines changed

1 file changed

+26
-22
lines changed

src/prng/isaac64.rs

Lines changed: 26 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -370,15 +370,16 @@ mod test {
370370

371371
#[test]
372372
fn test_isaac64_true_values_64() {
373-
let seed: &[_] = &[1, 23, 456, 7890, 12345];
373+
let seed: &[_] = &[1, 23, 456, 7890];
374374
let mut rng1: Isaac64Rng = SeedableRng::from_seed(seed);
375375
let mut results = [0u64; 10];
376376
for i in results.iter_mut() { *i = rng1.next_u64(); }
377377
let expected = [
378-
547121783600835980, 14377643087320773276, 17351601304698403469,
379-
1238879483818134882, 11952566807690396487, 13970131091560099343,
380-
4469761996653280935, 15552757044682284409, 6860251611068737823,
381-
13722198873481261842];
378+
15071495833797886820, 7720185633435529318,
379+
10836773366498097981, 5414053799617603544,
380+
12890513357046278984, 17001051845652595546,
381+
9240803642279356310, 12558996012687158051,
382+
14673053937227185542, 1677046725350116783];
382383
assert_eq!(results, expected);
383384

384385
let seed: &[_] = &[12345, 67890, 54321, 9876];
@@ -397,46 +398,49 @@ mod test {
397398

398399
#[test]
399400
fn test_isaac64_true_values_32() {
400-
let seed: &[_] = &[1, 23, 456, 7890, 12345];
401+
let seed: &[_] = &[1, 23, 456, 7890];
401402
let mut rng = Isaac64Rng::from_seed(seed);
402403
let mut results = [0u32; 12];
403404
for i in results.iter_mut() { *i = rng.next_u32(); }
404405
// Subset of above values, as an LE u32 sequence
405406
let expected = [
406-
141028748, 127386717, 1058730652, 3347555894, 851491469,
407-
4039984500, 2692730210, 288449107, 646103879, 2782923823,
408-
4195642895, 3252674613];
407+
3477963620, 3509106075,
408+
687845478, 1797495790,
409+
227048253, 2523132918,
410+
4044335064, 1260557630,
411+
4079741768, 3001306521,
412+
69157722, 3958365844];
409413
assert_eq!(results, expected);
410414
}
411415

412416
#[test]
413417
fn test_isaac64_true_values_mixed() {
414-
let seed: &[_] = &[1, 23, 456, 7890, 12345];
418+
let seed: &[_] = &[1, 23, 456, 7890];
415419
let mut rng = Isaac64Rng::from_seed(seed);
416420
// Test alternating between `next_u64` and `next_u32` works as expected.
417421
// Values are the same as `test_isaac64_true_values` and
418422
// `test_isaac64_true_values_32`.
419-
assert_eq!(rng.next_u64(), 547121783600835980);
420-
assert_eq!(rng.next_u32(), 1058730652);
421-
assert_eq!(rng.next_u32(), 3347555894);
422-
assert_eq!(rng.next_u64(), 17351601304698403469);
423-
assert_eq!(rng.next_u32(), 2692730210);
423+
assert_eq!(rng.next_u64(), 15071495833797886820);
424+
assert_eq!(rng.next_u32(), 687845478);
425+
assert_eq!(rng.next_u32(), 1797495790);
426+
assert_eq!(rng.next_u64(), 10836773366498097981);
427+
assert_eq!(rng.next_u32(), 4044335064);
424428
// Skip one u32
425-
assert_eq!(rng.next_u64(), 11952566807690396487);
426-
assert_eq!(rng.next_u32(), 4195642895);
429+
assert_eq!(rng.next_u64(), 12890513357046278984);
430+
assert_eq!(rng.next_u32(), 69157722);
427431
}
428432

429433
#[test]
430434
fn test_isaac64_true_bytes() {
431-
let seed: &[_] = &[1, 23, 456, 7890, 12345];
435+
let seed: &[_] = &[1, 23, 456, 7890];
432436
let mut rng = Isaac64Rng::from_seed(seed);
433437
let mut results = [0u8; 32];
434438
rng.fill_bytes(&mut results);
435439
// Same as first values in test_isaac64_true_values as bytes in LE order
436-
let expected = [140, 237, 103, 8, 93, 196, 151, 7,
437-
156, 242, 26, 63, 54, 166, 135, 199,
438-
141, 186, 192, 50, 116, 69, 205, 240,
439-
98, 205, 127, 160, 83, 98, 49, 17];
440+
let expected = [100, 131, 77, 207, 155, 181, 40, 209,
441+
102, 176, 255, 40, 238, 155, 35, 107,
442+
61, 123, 136, 13, 246, 243, 99, 150,
443+
216, 167, 15, 241, 62, 149, 34, 75];
440444
assert_eq!(results, expected);
441445
}
442446

0 commit comments

Comments
 (0)