1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.rng.core.source32;
18
19 import org.apache.commons.rng.core.RandomAssert;
20 import org.apache.commons.rng.core.util.NumberFactory;
21 import org.junit.Assert;
22 import org.junit.Test;
23
24 public class MiddleSquareWeylSequenceTest {
25 @Test
26 public void testReferenceCode() {
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52 final long[] seed = {0x012de1babb3c4104L, 0xc8161b4202294965L, 0xb5ad4eceda1ce2a9L};
53
54 final int[] expectedSequence = {
55 0xe7f4010b, 0x37bdb1e7, 0x05d8934f, 0x22970c75,
56 0xe7432a9f, 0xd157c60f, 0x26e9b5ae, 0x3dd91250,
57 0x8dbf85f1, 0x99e3aa17, 0xcb90322b, 0x29a007e2,
58 0x25a431fb, 0xcc612768, 0x510db5cd, 0xeb0aec2f,
59 0x05f88c18, 0xcdb79066, 0x5222c513, 0x9075045c,
60 0xf11a0e0e, 0x0106ab1d, 0xe2546700, 0xdf0a7656,
61 0x170e7908, 0x17a7b775, 0x98d69720, 0x74da3b78,
62 0x410ea18e, 0x4f708277, 0x471853e8, 0xa2cd2587,
63 0x16238d96, 0x57653154, 0x7ecbf9c8, 0xc5dd75bf,
64 0x32ed82a2, 0x4700e664, 0xb0ad77c9, 0xfb87df7b,
65 };
66
67 RandomAssert.assertEquals(expectedSequence, new MiddleSquareWeylSequence(seed));
68 }
69
70
71
72
73
74
75
76
77 @Test
78 public void testSelfSeeding() {
79 final int warmupCycles = 0;
80 final int testCycles = 3;
81
82 RandomAssert.assertNextLongNonZeroOutput(new MiddleSquareWeylSequence(new long[2]),
83 warmupCycles, testCycles);
84 }
85
86
87
88
89
90 @Test
91 public void testNextLong() {
92 final long[] seed = {0x012de1babb3c4104L, 0xc8161b4202294965L, 0xb5ad4eceda1ce2a9L};
93 final MiddleSquareWeylSequence rng1 = new MiddleSquareWeylSequence(seed);
94 final MiddleSquareWeylSequence rng2 = new MiddleSquareWeylSequence(seed);
95 for (int i = 0; i < 50; i++) {
96 Assert.assertEquals(NumberFactory.makeLong(rng1.nextInt(), rng1.nextInt()),
97 rng2.nextLong());
98 }
99 }
100 }