]> AND Private Git Repository - these_qian.git/blob - StatisticalTestsforRandomness.tex
Logo AND Algorithmique Numérique Distribuée

Private GIT Repository
change .bib
[these_qian.git] / StatisticalTestsforRandomness.tex
1 \chapter{Randomness}
2 \label{Statistical Tests for Randomness}
3 \minitoc
4
5 \section{Some famous statistical tests of random number generators}
6 \label{Some famous statistical tests of random number generators}
7
8 A theoretical proof for the randomness of a generator is impossible to give, therefore statistical inference based on observed sample sequences produced by the generator seems to be the best option. Considering the properties of binary
9 random sequences, various statistical tests can be designed to evaluate the assertion
10 that the sequence is generated by a perfectly random source. 
11 We have performed certain statistical tests for various CI PRNGs we proposed. These tests
12 include TestU01~\cite{Lecuyer2009}, NIST suite~\cite{ANDREW2008},
13 Diehard battery of tests~\cite{Marsaglia1996}, and Comparative test parameters. For completeness and for reference, we give
14 in the following subsection a brief description of each of the
15 aforementioned tests.
16
17
18
19 \subsection{NIST statistical test suite}
20
21
22
23 Among the numerous standard tests for pseudo-randomness, a convincing way to show the randomness of the produced sequences is to confront them to the NIST (National Institute of  Standards and Technology) Statistical Test, because it is an up-to-date test suite proposed by the Information Technology Laboratory (ITL). A new version of the Statistical Test Suite (Version 2.0) has been released in August 11, 2010.
24
25
26 The NIST test suite SP 800-22 is a statistical package consisting of 15 tests. They were developed to test the randomness of binary sequences produced by hardware or software based cryptographic PRNGs. These tests focus on a variety of different types of non-randomness that could exist in a sequence. 
27
28
29 For each statistical test, a set of $P-values$ (corresponding to the set of sequences) is produced. The interpretation of empirical results can be conducted in any number of ways. In this paper, the examination of the distribution of P-values to check for uniformity ($ P-value_{T}$) is used.
30 The distribution of P-values is examined to ensure uniformity. 
31 If $P-value_{T} \geqslant 0.0001$, then the sequences can be considered to be uniformly distributed.
32
33 In our experiments, 100 sequences (s = 100), each with 1,000,000-bit long, are generated and tested. If the $P-value_{T}$ of any test is smaller than 0.0001, the sequences are considered to be not good enough and the generating algorithm is not suitable for usage.
34
35 In what follows, the fifteen tests of the NIST Statistical tests suite, are recalled. A more detailed description for those tests could be found in \cite{ANDREW2008}.
36 \begin{itemize}
37 \item \textbf{Frequency (Monobit) Test (FT)} is to determine whether the number of ones and zeros in a sequence are approximately the same as would be expected for a truly random sequence.
38
39
40 \item \textbf{Frequency Test within a Block (FBT)} is to determine whether the frequency of ones in an M-bit block is approximately $M/2$, as would be expected under an assumption of randomness.($M$ is the length of each block.)
41
42
43 \item \textbf{Runs Test (RT)} is to determine whether the number of runs of ones and zeros of various lengths is as expected for a random sequence. In particular, this test determines whether the oscillation between such zeros and ones is too fast or too slow.
44
45
46 \item \textbf{Test for the Longest Run of Ones in a Block (LROBT)} is to determine whether the length of the longest run of ones within the tested sequence is consistent with the length of the longest run of ones that would be expected in a random sequence.
47
48
49 \item \textbf{Binary Matrix Rank Test (BMRT)} is to check for linear dependence among fixed length substrings of the original sequence.
50
51
52 \item \textbf{Discrete Fourier Transform (Spectral) Test (DFTT)} is to detect periodic features (i.e., repetitive patterns that are near each other) in the tested sequence that would indicate a deviation from the assumption of randomness.
53
54
55 \item \textbf{Non-overlapping Template Matching Test (NOTMT)} is to detect generators that produce too many occurrences of a given non-periodic (aperiodic) pattern.(m is the length in bits of each template which is the target string.)
56
57
58 \item \textbf{Overlapping Template Matching Test (OTMT)} is the number of occurrences of pre-specified target strings.(m is the length in bits of the template--in this case, the length of the run of ones.)
59
60 \item \textbf{Maurer's ``Universal Statistical`` Test (MUST)} is to detect whether or not the sequence can be
61 significantly compressed without loss of information.(L is the length of each block, and Q is the number of blocks in the initialization sequence)
62
63 \item \textbf{Linear Complexity Test (LCT)} is to determine whether or not the sequence is complex enough to be considered random.(M is the length in bits of a block.)
64
65 \item \textbf{Serial Test (ST)} is to determine whether the number of occurrences of the $2^{m}$ m-bit.(m is the length in bits of each block.)
66 overlapping patterns is approximately the same as would be expected for a random sequence.
67
68 \item \textbf{Approximate Entropy Test (AET)} is to compare the frequency of overlapping blocks of two consecutive/adjacent lengths (m and m+1) against the expected result for a random sequence.(m is the length of each block.)
69
70 \item \textbf{Cumulative Sums (Cusum) Test (CST)} is to determine whether the cumulative sum of the partial sequences occurring in the tested sequence is too large or too small relative to the expected behavior of that cumulative sum for random sequences.
71
72 \item \textbf{Random Excursions Test (RET)} is to determine if the number of visits to a particular state within a cycle deviates from what one would expect for a random
73 sequence.
74
75 \item \textbf{Random Excursions Variant Test (REVT)} is to detect deviations from the expected number
76 of visits to various states in the random walk.
77 \end{itemize}
78
79 \subsection{Diehard battery of tests}
80 The Diehard battery of tests was developed in 1996 by Prof. Georges Marsaglia
81 from the Florida State University for testing randomness of sequences of numbers
82 [77]. 
83 It has been the most sophisticated standard for over a decade. Because of the stringent requirements in the Diehard test suite, a generator passing Diehard battery of 
84 tests can be considered good as a rule of thumb. It was supposed to give a better way of analysis in comparison to original FIPS statistical tests.
85
86 The Diehard battery of tests consists of 18 different independent statistical tests. 
87 Each test requires binary file of about 10-12 million bytes in order to run the full set of tests. 
88 As the NIST test suite, most of the tests in Diehard return a $p-value$, which should be uniform on $[0,1)$ if the input file 
89 contains truly independent random bits.  Those $p-value$s are obtained by                
90 $p=F(X)$, where $F$ is the assumed distribution of the sample random variable $X$ (often normal). 
91 But that assumed $F$ is just an asymptotic approximation, for which the fit will be worst             
92 in the tails. Thus occasional $p-value$s near 0 or 1, such as 0.0012 or 0.9983 can occur. Unlike the NIST test suite, the test is considered to be successful when
93 the $p-value$ is in range where $[0 + \alpha , 1 -\alpha ]$ is the level of significance of the test.                
94   
95 For example, with a level of significance of $5\%$, p-value are expected to be in
96 $[0.025, 0.975]$. Note that if the $p-value$ is not in this range, it means that the null
97 hypothesis for randomness is rejected even if the sequence is truly random. These
98 tests are:
99 \begin{itemize}
100 \item \textbf{Birthday Spacings} Choose random points on a large interval. The spacings
101 between the points should be asymptotically Poisson distributed. The name
102 is based on the birthday paradox.
103 \item \textbf{Overlapping Permutations} Analyze sequences of five consecutive random
104 numbers. The 120 possible orderings should occur with statistically equal
105 probability
106 \item \textbf{Ranks of matrices} Select some number
107 of bits from some number of random numbers to form a matrix over 0,1, then
108 determine the rank of the matrix. Count the ranks.
109 \item \textbf{Monkey Tests} Treat sequences of some number of bits as ''words''. Count
110 the overlapping words in a stream. The number of ''words'' that don't appear
111 should follow a known distribution. The name is based on the infinite monkey
112 theorem.
113 \item \textbf{Count the 1's} Count the 1 bits in each of either successive
114 or chosen bytes. Convert the counts to ''letters'', and count the occurrences
115 of five-letter ''words''
116 \item \textbf{Parking Lot Test} Randomly place unit circles in a $100 x 100 $square. If the
117 circle overlaps an existing one, try again. After 12,000 tries, the number of
118 successfully ''parked'' circles should follow a certain normal distribution.
119 \item \textbf{Minimum Distance Test} Randomly place 8,000 points in a $10,000 x 10,000$
120 square, then find the minimum distance between the pairs. The square of this
121 distance should be exponentially distributed with a certain mean.
122 \item \textbf{Random Spheres Test} Randomly choose 4,000 points in a cube of edge 1,000.
123 Center a sphere on each point, whose radius is the minimum distance to another point. The smallest sphere's volume should be exponentially distributed
124 with a certain mean.
125 \item \textbf{The Sqeeze Test} Multiply 231 by random floats on [0,1) until you reach 1.
126 Repeat this 100,000 times. The number of floats needed to reach 1 should
127 follow a certain distribution.
128 \item \textbf{Overlapping Sums Test} Generate a long sequence of random floats on [0,1).
129 Add sequences of 100 consecutive floats. The sums should be normally distributed with characteristic mean and sigma.
130 \item \textbf{Runs Test} Generate a long sequence of random floats on [0,1). Count ascending and descending runs. The counts should follow a certain distribution.
131 \item \textbf{The Craps Test} Play 200,000 games of craps, counting the wins and the number
132 of throws per game. Each count should follow a certain distribution.
133 \end{itemize}
134
135
136
137 \subsection{Comparative test parameters}
138
139 In this section, five well-known statistical tests~\cite{Menezes1997} are used as  comparison tools. They encompass frequency and autocorrelation tests. In what follows, $s = s^0,s^1,s^2,\dots , s^{n-1}$ denotes a binary sequence of length $n$. The question is to determine whether this sequence possesses some specific characteristics that a truly random sequence would be likely to exhibit. The tests are introduced in this subsection and results are given in the next one.
140
141 \paragraph{Frequency test (monobit test)}
142
143 The purpose of this test is to check if the numbers of 0's and 1's are approximately equal in $s$, as it would be expected for a random sequence. Let $n_0, n_1$ denote these numbers. The statistic used here is 
144 \begin{equation*}
145 X_1=\frac{(n_0-n_1)^2}{n}, 
146 \end{equation*}
147 which approximately follows a $\chi^2$ distribution with one degree of freedom when $n\geqslant 10^7$.
148
149 \paragraph{Serial test (2-bit test)}
150
151 The purpose of this test is to determine if the number of occurrences of 00, 01, 10 and 11 as subsequences of $s$ are approximately the same. Let $n_{00} , n_{01} ,n_{10}$, and $n_{11}$ denote the number of occurrences of $00, 01, 10$, and $11$ respectively. Note that $n_{00} + n_{01} + n_{10} + n_{11} = n-1$ since the subsequences are allowed to overlap. The
152 statistic used here is:
153 \begin{equation*}
154 X_2=\frac{4}{n-1}(n_{00}^2+n_{01}^2+n_{10}^2+n_{11}^2)-\frac{2}{n}(n_0^2+n_1^2)+1,
155 \end{equation*}
156  which approximately follows a $\chi^2$ distribution with 2 degrees of freedom if $n\geqslant 21$.
157
158 \paragraph{Poker test}
159
160 The poker test studies if each pattern of length $m$ (without overlapping) appears the same number of times in $s$. Let $\lfloor \frac{n}{m} \rfloor\geqslant 5 \times 2^m$ and $k= \lfloor \frac{n}{m} \rfloor $. Divide the sequence $s$ into $k$ non-overlapping parts, each of length $m$. Let $n_i$ be the number of occurrences of the $i^{th}$ type of sequence of length $m$, where $1 \leqslant i \leqslant 2^m$. The statistic used is 
161 \begin{equation*}
162 X_3=\dfrac{2^m}{k}\left(\displaystyle{\sum^{2^m}_{i=1}n^2_i}\right)-k,
163 \end{equation*}
164 which approximately follows a $\chi^2$ distribution with $2^m-1$ degrees of freedom. Note that the poker test is a generalization of the frequency test (setting $m = 1$ in the poker test yields the frequency test).
165
166 \paragraph{Runs test}
167
168 The purpose of the runs test is to figure out whether the number of runs of various lengths in the sequence $s$ is as expected, for a random sequence. A run is defined as a pattern of all zeros or all ones, a block is a run of ones, and a gap is a run of zeros. The expected number of gaps (or blocks) of length $i$ in a random sequence of length $n$ is $e_i = \frac{n-i+3}{2^{i+2}}$. Let $k$ be equal to the largest integer $i$ such that $e_i \geqslant 5$. Let
169 $B_i , G_i$ be the number of blocks and gaps of length $i$ in $s$, for each $i \in \llbracket 1, k\rrbracket$. The statistic used here will then be:
170 \begin{equation*}
171 \displaystyle{X_4=\sum^k_{i=1}\frac{(B_i-e_i)^2}{e_i}+\sum^k_{i=1}\frac{(G_i-e_i)^2}{e_i}},
172 \end{equation*}
173 \noindent which approximately follows a $\chi^2$ distribution with $2k - 2$ degrees of freedom.
174
175 \paragraph{Autocorrelation test}
176
177 The purpose of this test is to check for coincidences between the sequence $s$ and (non-cyclic) shifted versions of it. Let $d$ be a fixed integer, $ 1 \leqslant d \leqslant \lfloor n/2 \rfloor$. The  $A(d) = \sum_{i=0}^{n-d-1} s_i\oplus s_{i+d}$ is the amount of bits not equal between the sequence and itself displaced by $d$ bits. The statistic used is:
178 \begin{equation*}
179 X_5=\dfrac{2 \left(A(d)-\frac{n-d}{2}\right)}{\sqrt{n-d}},
180 \end{equation*}
181 which approximately follows a normal distribution $\mathcal{N}(0, 1)$ if $n-d \geqslant 10$. Since small values of $A(d)$ are as unexpected as large values, a two-sided test should be used.
182
183 \subsection{TestU01 Statistical Test}
184 \label{Testing a generator}
185
186 TestU01 is extremely diverse in implementing classical tests,
187 cryptographic tests, new tests proposed in the literature, and original tests.
188 In fact, it encompasses most of the other testsuites. 
189 Seven batteries of tests in the TestU01 package are listed as follows:
190
191 \begin{itemize}
192 \item{\textbf{Small Crush.}} The first battery to check, with 15 $p-$values reported. This is a fast collection of tests used to be sure that the basic requirements of randomness are satisfied. In case of success, this battery should be followed by Crush and BigCrush.
193 \item{\textbf{Crush.}} This battery includes many difficult tests, like those described in ~\cite{Knuth1998}. %Cette référence n'apparaît pas.
194 %D. E. Knuth. The Art of Computer Programming, Volume 2: Seminumerical Algorithms. Addison-Wesley, Reading, Mass., third edition, 1998.
195 It uses approximately $2^35$ random numbers and applies 96 statistical tests
196 (it computes a total of 144 test statistics and p-values)
197 \item{\textbf{Big Crush.}} it uses
198 approximately $2^38$ random numbers and applies 106 tests (it computes 160 test
199 statistics and p-values)
200 A suite of very stringent statistical tests, and the most difficult battery to pass.
201 \item{\textbf{Rabbit.}} This battery of tests reports 38 $p-$values.
202 \item{\textbf{Alphabit.}} Alphabit and AlphabitFile have been designed primarily to test hardware random bits generators. 17 $p-$values are reported.
203 \item{\textbf{Pseudo-DieHARD.}} This battery implements most of the tests contained in the popular battery DieHARD or, in some cases, close approximations to them. It is not a very stringent battery. Indeed, there is no generator that can pass Crush and BigCrush batteries and fail Pseudo-DieHARD, while the converse occurs for several defective generators. 126 $p-$values are reported here.
204 \item{\textbf{FIPS\_140\_2.}} The NIST (National Institute of Standards and Technology) of the U.S. federal government has proposed a statistical test suite. It is used to evaluate the randomness of bitstreams produced by cryptographic random number generators. This battery reports 16 $p-$values.
205 \end{itemize}
206
207 Six predefined batteries of tests are available in TestU01; three of them
208 are for sequences of U (0, 1) random numbers and the three others are for bit
209 sequences. In the first category, we have SmallCrush, Crush, and BigCrush
210 To test a RNG for general use.
211 one could first apply the small and fast battery SmallCrush. If it passes, one could then apply
212 the more stringent battery Crush, and finally the yet more time-consuming battery BigCrush.
213 These batteries of tests include the classical tests described in Knuth~\cite{Knuth1998}, for
214 example, the run, poker, coupon collector, gap, max-of-t, and permutation tests.
215 There are collision and birthday spacings tests in 2, 3, 4, 7, 8 dimensions, several close pairs tests in 2, 3, 5, 7, 9 dimensions, and correlation tests. Some
216 tests use the generated numbers as a sequence of ``random`` bits: random walk
217 tests, linear complexity tests, a Lempel-Ziv compression test, several Hamming
218 weights tests, matrix rank tests, run and correlation tests, among others.
219
220
221
222
223 The batteries Rabbit, Alphabit, and BlockAlphabit are for binary sequences
224 (e.g., a cryptographic pseudorandom generator or a source of random bits
225 produced by a physical device). They were originally designed to test a finite
226 sequence contained in a binary file. When invoking the battery, one must specify the number $n_B$ of bits available for each test. When the bits are in a file, $n_B$
227 must not exceed the number of bits in the file, and each test will reuse the same
228 sequence of bits starting from the beginning of the file (so the tests are not independent). When the bits are produced by a generator, each test uses a different
229 stream. In both cases, the parameters of each test are chosen automatically as
230 a function of $n_B$ .
231 The batteries Alphabit and Rabbit can be applied on a binary file considered as a source
232 of random bits. They can also be applied on a programmed generator. Alphabit has been
233 defined primarily to test hardware random bits generators. The battery PseudoDIEHARD
234 applies most of the tests in the well-known DIEHARD suite of Marsaglia [106]. The battery
235 FIPS\_140\_2 implements the small suite of tests of the FIPS\_140\_2 standard from NIST.
236 The batteries described in this module will write the results of each test (on standard
237 output) with a standard level of details (assuming that the boolean switches of module
238 swrite have their default values), followed by a summary report of the suspect p-values
239 obtained from the specific tests included in the batteries. It is also possible to get only the
240 summary report in the output, with no detailed output from the tests, by setting the boolean
241 switch swrite\_Basic to FALSE. Rabbit and Alphabit apply 38 and 17 different statistical tests,
242 respectively. 
243
244 Some of the tests compute more than one statistic (and p-value) using the same stream of random
245 numbers and these statistics are thus not independent. That is why the number of statistics
246 in the summary reports is larger than the number of tests in the description of the batteries.
247
248
249 \begin{itemize}
250 \item{\textbf{Small Crush.}}  smarsa\_BirthdaySpacings   \\ 
251  sknuth\_Collision   \\ 
252  sknuth\_Gap    \\ 
253  sknuth\_SimpPoker   \\ 
254  sknuth\_CouponCollector    \\ 
255  sknuth\_MaxOft   \\ 
256  svaria\_WeightDistrib     \\ 
257  smarsa\_MatrixRank     \\  
258  sstring\_HammingIndep    \\ 
259  swalk\_RandomWalk1      \\ 
260 \item{\textbf{Crush.}}  smarsa\_SerialOver   \\    
261  smarsa\_CollisionOver      \\ 
262  smarsa\_BirthdaySpacings      \\ 
263  snpair\_ClosePairs      \\ 
264  snpair\_ClosePairsBitMatch     \\  
265  sknuth\_SimpPoker      \\ 
266  sknuth\_CouponCollector      \\ 
267  sknuth\_Gap      \\ 
268  sknuth\_Run      \\ 
269  sknuth\_Permutation      \\ 
270  sknuth\_CollisionPermut      \\ 
271  sknuth\_MaxOft      \\ 
272  svaria\_SampleProd      \\ 
273  svaria\_SampleMean     \\ 
274  svaria\_SampleCorr      \\ 
275  svaria\_AppearanceSpacings   \\    
276  svaria\_WeightDistrib     \\  
277  svaria\_SumCollector      \\ 
278  smarsa\_MatrixRank      \\ 
279  smarsa\_Savir2      \\ 
280  smarsa\_GCD      \\ 
281  swalk\_RandomWalk1      \\ 
282  scomp\_LinearComp     \\  
283  scomp\_LempelZiv      \\ 
284  sspectral\_Fourier3      \\ 
285  sstring\_LongestHeadRun     \\  
286  sstring\_PeriodsInStrings    \\   
287  sstring\_HammingWeight2      \\ 
288  sstring\_HammingCorr      \\ 
289  sstring\_HammingIndep     \\  
290  sstring\_Run      \\ 
291  sstring\_AutoCor   \\ 
292 \item{\textbf{Big Crush.}} smarsa\_SerialOver\\ 
293 smarsa\_CollisionOver\\ 
294 smarsa\_BirthdaySpacings\\ 
295 snpair\_ClosePairs \\ 
296 sknuth\_SimpPoker\\ 
297 sknuth\_CouponCollector\\ 
298 sknuth\_Gap\\ 
299 sknuth\_Run\\ 
300 sknuth\_Permutation\\ 
301 sknuth\_CollisionPermut\\ 
302 sknuth\_MaxOft\\ 
303 svaria\_SampleProd\\ 
304 svaria\_SampleMean\\ 
305 svaria\_SampleCorr\\ 
306 svaria\_AppearanceSpacings\\ 
307 svaria\_WeightDistrib\\ 
308 svaria\_SumCollector\\ 
309 smarsa\_MatrixRank\\ 
310 smarsa\_Savir2\\ 
311 smarsa\_GCD\\ 
312 swalk\_RandomWalk1\\ 
313 scomp\_LinearComp\\ 
314 scomp\_LempelZiv\\ 
315 sspectral\_Fourier3\\ 
316 sstring\_LongestHeadRun\\ 
317 sstring\_PeriodsInStrings\\ 
318 sstring\_HammingWeight2\\ 
319 sstring\_HammingCorr\\ 
320 sstring\_HammingIndep\\ 
321 sstring\_Run\\ 
322 sstring\_AutoCor\\ 
323
324 \item{\textbf{Rabbit.}} smultin\_MultinomialBitsOver\\ 
325 snpair\_ClosePairsBitMatch\\ 
326 svaria\_AppearanceSpacings\\ 
327 scomp\_LinearComp\\ 
328 scomp\_LempelZiv\\ 
329 sspectral\_Fourier1\\ 
330 sspectral\_Fourier3\\ 
331 sstring\_LongestHeadRun\\ 
332 sstring\_PeriodsInStrings\\ 
333 sstring\_HammingWeight\\ 
334 sstring\_HammingCorr\\ 
335 sstring\_HammingIndep\\ 
336 sstring\_AutoCor\\ 
337 sstring\_Run\\ 
338 smarsa\_MatrixRank\\ 
339 swalk\_RandomWalk1\\ 
340
341 \item{\textbf{Alphabit.}} smultin\_MultinomialBitsOver\\ 
342 sstring\_HammingIndep\\ 
343 sstring\_HammingCorr\\ 
344 swalk\_RandomWalk1 \\ 
345
346
347 \item{\textbf{Pseudo-DieHARD.}} Birthday Spacings test\\ 
348 Overlapping 5-Permutation test\\ 
349 Binary Rank Tests for Matrices test\\ 
350 Bitstream test\\ 
351 OPSO test\\ 
352 OQSO test\\ 
353 DNA test\\ 
354 Count-the-1's test\\ 
355 Parking Lot test\\ 
356 Minimum Distance test\\ 
357 3-D Spheres test\\ 
358 Squeeze test\\ 
359 Overlapping Sums test\\ 
360 Runs test\\ 
361 Craps test\\ 
362
363 \item{\textbf{FIPS\_140\_2.}} Monobit test\\ 
364 ``poker'' test\\ 
365 Runs test\\ 
366 Longest Run of Ones in a Block test
367
368 \end{itemize}
369
370 TestU01 suite implements hundreds of tests and reports $p-$values. If a $p-$value is within $[0.001,0.999]$, the associated test is a success. A $p-$value lying outside this boundary means that its test has failed. %This is the standard range the test-suite suggests. The p-value selection criteria for the various test suites were chosen to produce a few failures in the best cases. Setting the criteria too low (closer to zero) would exhibit no failures and setting the criteria too high would fail everything.
371
372
373
374 \section{Test results for some PRNGs}
375
376 \subsection{Results of NIST}
377
378 In our experiments, 100 sequences (s = 100) of 1,000,000 bits are generated and tested. If the value $\mathbb{P}_T$ of any test is smaller than 0.0001, the sequences are considered to not be good enough and the generator is unsuitable. Table~\ref{The passing1} shows $\mathbb{P}_T$ of the sequences for Logistic map, XORshift and ISAAC in Section~\ref{The generation of pseudorandom sequence}. If there are at least two statistical values in a test, this test is marked with an asterisk and the average value is computed to characterize the statistical values. 
379
380
381 \begin{table}[!t]
382 \renewcommand{\arraystretch}{1.3}
383 \caption{NIST SP 800-22 test results ($\mathbb{P}_T$)}
384 \label{The passing1}
385 \centering
386   \begin{tabular}{lccc}
387     \toprule
388 Test name &Logistic& XORshift& ISAAC\\ 
389
390 Frequency (Monobit) Test                                        &0.53414                &0.14532                &0.67868 \\ 
391 Frequency Test within a Block                                   &0.00275                &0.45593                &0.10252 \\ 
392 Runs Test                                                       &0.00001                &0.21330                &0.69931  \\ 
393 Longest Run of Ones in a Block Test                             &0.08051                &0.28966                &0.43727   \\
394 Binary Matrix Rank Test                                         &0.67868                &0.00000                &0.89776  \\ 
395 Discrete Fourier Transform (Spectral) Test                      &0.57490                &0.00535                &0.51412   \\ 
396 Non-overlapping Template Matching Test*                         &0.28468                &0.50365                &0.55515  \\ 
397 Overlapping Template Matching Test                              &0.10879                &0.86769                &0.63711  \\ 
398 Universal Statistical Test                                      &0.02054                &0.27570                &0.69931   \\ 
399 Linear Complexity Test                                          &0.79813                &0.92407                &0.03756    \\ 
400 Serial Test* (m=10)                                             &0.41542                &0.75792                &0.32681   \\ 
401 Approximate Entropy Test (m=10)                                 &0.02054                &0.41902                &0.30412  \\ 
402 Cumulative Sums (Cusum) Test*                                   &0.60617                &0.81154                &0.36786\\ 
403 Random Excursions Test*                                         &0.53342                &0.41923                &0.50711   \\ 
404 Random Excursions Variant Test*                                 &0.28507                &0.52833                &0.40930    \\ \hline
405 Success                                                         &15/15          &14/15                  &15/15 \\ 
406 \bottomrule
407   \end{tabular}
408 \end{table}
409
410 \subsection{Results of Diehard}
411 \label{Subsec:DieHARD}
412
413 Table~\ref{Results of DieHARD battery} gives the results derived from applying the DieHARD battery of tests to Logistic map, XORshift and ISAAC in Section~\ref{The generation of pseudorandom sequence}.
414
415 \begin{tiny}
416 \begin{table}[!t]
417 \renewcommand{\arraystretch}{1.3}
418 \caption{Results of DieHARD battery of tests}
419 \label{Results of DieHARD battery}
420 \centering
421 \begin{tabular}{llccc} \toprule
422 No. &Test name &Logistic& XORshift& ISAAC\\
423 1 & Overlapping Sum  &Pass &Pass&Pass\\
424 2 & Runs Up 1  & Pass &Pass&Pass\\
425 &Runs Down 1  &Pass &Pass&Pass\\
426 &Runs Up 2  &Pass &Pass&Pass\\
427 &Runs Down 2  & Pass &Pass&Pass\\
428 3 & 3D Spheres  &Pass &Pass&Pass\\
429 4 & Parking Lot  &Pass &Pass&Pass\\
430 5 & Birthday Spacing  &Pass &Pass&Pass\\
431 6 & Count the ones 1  &Pass &Fail&Pass\\
432 7 &Binary Rank $6 \times 8$  & Pass &Pass&Pass\\
433 8 &Binary Rank $31 \times 31$  &Pass &Fail&Pass\\
434 9 &Binary Rank $32 \times 32$  &Pass &Fail&Pass\\
435 10 &Count the ones 2  &Pass&Pass&Pass \\
436 11 &Bit Stream  &Pass&Pass&Pass \\
437 12 &Craps Wins  &Pass&Pass&Pass \\
438 &Throws &Pass  &Pass&Pass\\
439 13 &Minimum Distance  &Pass &Pass&Pass\\
440 14 &Overlapping Perm.  &Pass &Pass&Pass\\
441 15 &Squeeze &Pass &Pass&Pass \\
442 16 &OPSO &Pass &Pass&Pass \\
443 17 &OQSO &Pass &Pass&Pass \\
444 18 &DNA &Pass &Pass &Pass\\
445 &Number of tests passed  &18 &15&18\\\bottomrule
446 \end{tabular}
447 \end{table}
448 \end{tiny}
449
450 \subsection{Results of comparative test parameters}
451
452
453
454 \begin{table}[!t]
455 \renewcommand{\arraystretch}{1.3}
456 \caption{Comparative test parameters with a $10^7$ bits sequence}
457 \label{Comparison3}
458 \centering
459   \begin{tabular}{lcccc}
460    \toprule
461 Method                  &Threshold values                       &Logistic       & XORshift      & ISAAC\\
462 Monobit                 &3.8415                                 &0.1280         &1.7053         &0.1401\\ \hline
463 Serial                  &5.9915                                 &0.1302         &2.1466         &0.1430  \\ \hline
464 Poker                   &316.9194                               &240.2893       &248.9318       &236.8670  \\ \hline
465 Runs                    &55.0027                                &26.5667        &18.0087        &34.1273   \\ \hline
466 Autocorrelation         &1.6449                                 & 0.0373        &0.5099         &-2.1712  \\ 
467 \bottomrule
468   \end{tabular}
469 \end{table}
470
471 We show in Table~\ref{Comparison3} a comparison between Logistic map, XORshift and ISAAC in Section~\ref{The generation of pseudorandom sequence}. 
472
473
474
475 \subsection{Results of TestU01}
476
477 Table~\ref{TestU011} gives the results derived from applying the TestU01 battery of tests to the PRNGs considered in Logistic map, XORshift and ISAAC in Section~\ref{The generation of pseudorandom sequence}.
478 \begin{table}[!t]
479 \renewcommand{\arraystretch}{1.3}
480 \caption{TestU01 Statistical Test}
481 \label{TestU011}
482 \centering
483   \begin{tabular}{lcccccc}
484     \toprule
485 Test name &Battery&Parameters& Logistic                 & XORshift      & ISAAC\\
486 Rabbit                          &$32\times10^9$ bits    &38     &21             &14     &0       \\
487 Alphabit                        &$32\times10^9$ bits    &17     &16             &9      &0       \\
488 Pseudo DieHARD                  &Standard               &126    &0              &2      &0      \\
489 FIPS\_140\_2                    &Standard               &16     &0              &0      &0      \\
490 Small Crush                     &Standard               &15     &4              &5      &0       \\
491 Crush                           &Standard               &144    &95             &57     &0       \\
492 Big Crush                       &Standard               &160    &125            &55     &0       \\ \hline
493 Number of failures              &                       &516    &261            &146    &0       \\
494 \bottomrule
495   \end{tabular}
496 \end{table}
497
498
499
500 \subsection{Conclusion}
501 From the results of the TestU01, NIST, Comparative test parameters and DieHARD batteries of tests applied to Logistic map, XORshift and ISAAC in Section~\ref{The generation of pseudorandom sequence}, the worst situation obviously appears when using the logistic map or XORshift, and  ISAAC can pass the three batteries of tests.
502
503 We can conclude that Binary Matrix Rank Test is failed for XORshift in NIST statistical test suite. The focus of the test is the rank of disjoint sub-matrices of the entire sequence. Note that this test also appears in the DIEHARD battery of tests.
504
505 XORshift fails three individual tests contained into the DieHARD battery, namely: ``Count the ones'', ``Binary Rank $31 \times 31$'', and ``Binary Rank $32 \times 32$''. 
506 We can thus conclude that, in the random numbers obtained with XORshift, only the least significant bits seem to be independent. This fact can explain the poor behavior of this PRNG in the aforementioned basic tests that evaluate the independence of real numbers. 
507
508
509 Seven tests were failed with a $p-value$ practically equal to 0 or 1 for logistic map and XORshift in TestU01 Statistical Test. It is clear that the null hypothesis $H_0$ must be rejected for these two bit streams. $H_0$ is equivalent to saying that for each integer $t>0$, the vector $(u_0 , . . . , u_{t-1} ) $is uniformly distributed over the $t$-dimensional unit cube $[0, 1]^t$
510
511
512
513 \section{Test results and comparative analysis for old CI}
514 \label{Test results and comparative analysis}
515
516 \subsection{How to choose good parameters}
517
518 \subsubsection{Small Crush test and correlation with $k$}
519
520 To exhibit the correlation between the parameter $k$ such that $\mathcal{M}=\{$k, k+1$\}$ (see Section \ref{subsec Chaotic iterations as PRNG}) and the success rate, we have used CI(ISAAC, XORshift) PRNG as a concrete example. 
521
522 %We are now ready to discuss our test results. We begin with the relatively simpler test of Small Crush. 
523 In Figure~\ref{Small Crush for CI} is plotted the Small Crush test on sequences generated by CI(ISAAC, XORshift). 
524 Small Crush is succeeded when the total number of passes is 15. 
525 In these figures, the ordinates are the number of successful passes a sequence goes through. 
526 Thus, a qualified sequence must have most of the time a passing value equal to 15, with possible occasional failures (even a true random sequence can occasionally fail these tests). 
527 It can be seen in Figure~\ref{Small Crush for CI}, and it as been obtained too in other simulations we have realized, that when $k>3\mathsf{N}$, the sequences tend to pass the Small Crush test. 
528
529 \begin{figure}
530 \centering
531 \includegraphics[scale=0.55]{images/correlation_c_sc.eps} 
532 \DeclareGraphicsExtensions.
533 \caption{Small Crush for CI(ISAAC,XORshift)}
534 \label{Small Crush for CI}
535 \end{figure}
536
537 \subsubsection{Correlation between TestU01 results and $\mathsf{N}$}
538
539 To compare the sequences generated with different parameters $\mathsf{N}$ in a more quantitative manner, we have set $k=3N+1$, and the same analysis for the four CI(X,Y) generators through TestU01 has been repeated. Let us recall that the TestU01 suite implements 518 tests and reports $p-$values, which must be within $[0.001,0.999]$ for a passing test.
540
541 \begin{figure*}
542 \centering
543 \includegraphics[scale=0.4]{images/N.eps} 
544 \DeclareGraphicsExtensions.
545 \caption{TestU01 results}
546 \label{TestU01 results}
547 \end{figure*}
548
549 Figure~\ref{TestU01 results} shows the number of passing sequences generated by the CI(X,Y) PRNGs proposed in this paper, with the same parameters and initial values. % (see the appendix for details).
550 It can be seen that $\mathsf{N}=4$ gives the best results.
551
552 For this reason, it is the default $\mathsf{N}=4$ with $k=12$ mode in following sections.
553 %As can be seen, the places where a sequence successfully passes most of the tests correspond nicely to the parameters for which $\mathsf{N}=4$.
554
555 \subsection{Results of NIST}
556
557 In our experiments, 100 sequences (s = 100) of 1,000,000 bits are generated and tested. If the value $\mathbb{P}_T$ of any test is smaller than 0.0001, the sequences are considered to not be good enough and the generator is unsuitable. Table~\ref{The passing for old CI} shows $\mathbb{P}_T$ of the sequences based on discrete chaotic iterations using different schemes. If there are at least two statistical values in a test, this test is marked with an asterisk and the average value is computed to characterize the statistical values. 
558
559
560 \begin{table}[!t]
561 \renewcommand{\arraystretch}{1.3}
562 \caption{NIST SP 800-22 test results ($\mathbb{P}_T$) for old CI algorithms ($\mathsf{N}=4$)}
563 \label{The passing for old CI}
564 \centering
565   \begin{tabular}{lcccc}
566     \toprule
567 \multirow{4}*{Test name} & \multicolumn{4}{c}{Old CI}\\
568 &Logistic& XORshift& ISAAC&ISAAC  \\ 
569 &+& +& + & + \\ 
570 &Logistic& XORshift& XORshift&ISAAC  \\ \cmidrule(r){2-5}
571 Frequency (Monobit) Test                        &0.85138        &0.59554        &0.40119                &0.33453 \\ 
572 Frequency Test within a Block                   &0.38382        &0.55442        &0.89776                &0.71974  \\ 
573 Runs Test                                       &0.31908        &0.45593        &0.31908                &0.38382  \\ 
574 Longest Run of Ones in a Block Test             &0.13728        &0.01671        &0.08558                &0.67868   \\
575 Binary Matrix Rank Test                         &0.69931        &0.61630        &0.47498                &0.79813  \\ 
576 Discrete Fourier Transform (Spectral) Test      &0.12962        &0.00019        &0.77918                &0.67868   \\ 
577 Non-overlapping Template Matching Test*         &0.48473        &0.53225        &0.53568                &0.51258 \\ 
578 Overlapping Template Matching Test              &0.47498        &0.33453        &0.36691                &0.07571  \\ 
579 Universal Statistical Test                      &0.09657        &0.03292        &0.26224                &0.85138   \\ 
580 Linear Complexity Test                          &0.41902        &0.40119        &0.61715                & 0.21330    \\ 
581 Serial Test* (m=10)                             &0.53427        &0.01339        &0.33453                &0.76102   \\ 
582 Approximate Entropy Test (m=10)                 &0.99146        &0.13728        &0.53414                &0.22482  \\ 
583 Cumulative Sums (Cusum) Test*                   &0.75530        &0.04646        &0.31915                & 0.47658\\ 
584 Random Excursions Test*                         &0.65406        &0.50362        &0.50804                &0.46305  \\ 
585 Random Excursions Variant Test*                 &0.55388        &0.34777        &0.48400                &0.54863    \\ \hline
586 Success                                         &15/15          &15/15          &15/15          &15/15 \\ 
587 \bottomrule
588   \end{tabular}
589 \end{table}
590
591
592 \subsection{Results of Diehard}
593 \label{Subsec:DieHARD}
594
595 Table~\ref{Results of DieHARD battery of tests for old CI algorithms} gives the results derived from applying the DieHARD battery of tests to the PRNGs considered in this work. 
596
597 \begin{tiny}
598 \begin{table}[!t]
599 \renewcommand{\arraystretch}{1.3}
600 \caption{Results of DieHARD battery of tests for old CI algorithms ($\mathsf{N}=4$)}
601 \label{Results of DieHARD battery of tests for old CI algorithms}
602 \centering
603 \begin{tabular}{llcccc} \toprule
604 \multirow{4}*{No.} &\multirow{4}*{Test name}& \multicolumn{4}{c}{Old CI}\\
605 &&Logistic& XORshift& ISAAC&ISAAC  \\ 
606 &&+& +& + & + \\ 
607 &&Logistic& XORshift& XORshift&ISAAC \\ \cmidrule(r){3-6}
608
609 1 & Overlapping Sum &Pass &Pass &Pass&Pass\\
610 2 & Runs Up 1 &Pass & Pass &Pass&Pass\\
611 &Runs Down 1 &Pass &Pass &Pass&Pass\\
612 &Runs Up 2 & Pass &Pass &Pass&Pass\\
613 &Runs Down 2 &Pass & Pass &Pass&Pass\\
614 3 & 3D Spheres &Pass &Pass &Pass&Pass\\
615 4 & Parking Lot &Pass &Pass &Pass&Pass\\
616 5 & Birthday Spacing &Pass &Pass &Pass&Pass\\
617 6 & Count the ones 1 &Pass &Pass &Pass&Pass\\
618 7 &Binary Rank $6 \times 8$ &Pass & Pass &Pass&Pass\\
619 8 &Binary Rank $31 \times 31$ &Pass &Pass &Pass&Pass\\
620 9 &Binary Rank $32 \times 32$ &Pass &Pass &Pass&Pass\\
621 10 &Count the ones 2 &Pass &Pass&Pass&Pass \\
622 11 &Bit Stream &Pass &Pass&Pass&Pass \\
623 12 &Craps Wins &Pass &Pass&Pass&Pass \\
624 &Throws &Pass &Pass &Pass&Pass\\
625 13 &Minimum Distance &Pass &Pass &Pass&Pass\\
626 14 &Overlapping Perm. &Pass &Pass &Pass&Pass\\
627 15 &Squeeze &Pass &Pass&Pass&Pass \\
628 16 &OPSO &Pass &Pass&Pass&Pass \\
629 17 &OQSO &Pass &Pass&Pass&Pass \\
630 18 &DNA &Pass &Pass&Pass &Pass\\
631 &Number of tests passed &18 &18 &18&18\\\bottomrule
632 \end{tabular}
633 \end{table}
634 \end{tiny}
635
636 \subsection{Results of comparative test parameters}
637
638 \begin{table}[!t]
639 \renewcommand{\arraystretch}{1.3}
640 \caption{Comparative test parameters for Old CI(X,Y) with a $10^7$ bits sequence ($\mathsf{N}=4$)}
641 \label{Comparison2 for old CI algorithms}
642 \centering
643   \begin{tabular}{lccccc}
644     \toprule
645 \multirow{4}*{Method} &\multirow{4}*{Threshold values}  & \multicolumn{4}{c}{Old CI}\\
646 &&Logistic& XORshift& ISAAC&ISAAC  \\ 
647 &&+& +& + & + \\ 
648 &&Logistic& XORshift& XORshift&ISAAC \\ \cmidrule(r){3-6}
649 Monobit                 &3.8415         &1.0368         &3.5689         &0.0569         &0.6641 \\ \hline
650 Serial                  &5.9915         &1.1758         &3.5765         &0.9828         &0.6506  \\ \hline
651 Poker                   &316.9194       &269.0607       &222.3683       &243.8415       &262.6440  \\ \hline
652 Runs                    &55.0027        &36.5479        &28.4237        &29.3195        &30.3116   \\ \hline
653 Autocorrelation         &1.6449         &0.4054         &0.3403         &0.6141         &0.9455  \\ \bottomrule
654   \end{tabular}
655 \end{table}
656
657
658 We show in Table~\ref{Comparison2 for old CI algorithms} a comparison between old CI(Logistic, Logistic), old CI(XORshift, XORshift), old CI(ISAAC, XORshift), and old CI(ISAAC, ISAAC). %The comparative test is related to the duration needed by each algorithm to generate a $10^7$ bits long sequence. 
659
660
661 \subsection{Results of TestU01}
662 In a sound theoretical basis, a PRNG based on discrete chaotic iterations (CI) is a composite generator which combines the features of two PRNGs. The first generator constitutes the initial condition of the chaotic dynamical system. The second generator randomly chooses which outputs of the chaotic system must be returned. The intention of this combination is to cumulate the effects of chaotic and random behaviors, to improve the statistical and security properties relative to each generator taken alone.
663
664 This PRNG based on discrete chaotic iterations may utilize any reasonable RNG as inputs. For demonstration purposes, Logistic map, XORshift and ISAAC are adopted here. 
665
666 Table~\ref{TestU01 for old CI} gives the results derived from applying the TestU01 battery of tests to the PRNGs considered in this work.
667 \begin{table}[!t]
668 \renewcommand{\arraystretch}{1.3}
669 \caption{TestU01 Statistical Test for old CI algorithms ($\mathsf{N}=4$)}
670 \label{TestU01 for old CI}
671 \centering
672   \begin{tabular}{lcccccc}
673     \toprule
674 \multirow{4}*{Test name} &&& \multicolumn{4}{c}{Old CI}\\
675 &&&Logistic& XORshift& ISAAC&ISAAC  \\ 
676 &&&+& +& + & + \\ 
677 &&&Logistic& XORshift& XORshift&ISAAC  \\ \cmidrule(r){4-7}
678 Rabbit                          &$32\times10^9$ bits    &38     &7      &2      &0      &0       \\
679 Alphabit                        &$32\times10^9$ bits    &17     & 3     &0      &0      &0       \\
680 Pseudo DieHARD                  &Standard               &126    &0      &0      &0      &0      \\
681 FIPS\_140\_2                    &Standard               &16     &0      &0      &0      &0      \\
682 Small Crush                     &Standard               &15     &2      &0      &0      &0       \\
683 Crush                           &Standard               &144    &47     &4      &0      &0       \\
684 Big Crush                       &Standard               &160    &79     &3      &0      &0       \\ \hline
685 Number of failures              &                       &518    &138    &9      &0      &0       \\
686 \bottomrule
687   \end{tabular}
688 \end{table}
689
690
691 \subsection{Conclusion}
692
693
694 Our old CI PRNG based on discrete chaotic iterations combines the features of two PRNGs, in order to improve their statistical properties. Logistic map, XORshift, and ISAAC are adopted here for demonstration purposes. 
695 The results of comparative test parameters confirm that the proposed CI PRNGs are all able to pass these tests.
696 Statistical results of comparative test parameters for both CI(XORshift, XORshift) and CI(ISAAC, XORshift) are better for most of the parameters, leading to the conclusion that these generators are more secure than the others. 
697 This improvement clearly appears in the TestU01 results: i.e. XORshift alone fails 142 of these tests, whereas  CI(XORshift, XORshift) only fails 9 out of 518.
698 In other words, in addition of having chaotic properties, our PRNG based on discrete chaotic iterations can pass more performed tests than its individual components taken alone. 
699
700
701 \section{Test results and comparative analysis for new CI}
702
703 \subsection{Results of NIST}
704 \label{Results of NISTfor new CI}
705 In our experiments, 100 sequences (s = 100) of 1,000,000 bits are generated and tested. If the value $\mathbb{P}_T$ of any test is smaller than 0.0001, the sequences are considered to not be good enough and the generator is unsuitable. Table~\ref{The passing rate1} and Table~\ref{The passing for new CI} show $\mathbb{P}_T$ of the sequences based on discrete chaotic iterations using different schemes. If there are at least two statistical values in a test, this test is marked with an asterisk and the average value is computed to characterize the statistical values. 
706
707 \begin{table}[!t]
708 \renewcommand{\arraystretch}{1.3}
709 \caption{SP 800-22 test results ($\mathbb{P}_T$) for new CI(XORshift, XORshift)  $\mathsf{N}=32$}
710 \label{The passing rate1}
711 \centering
712 \begin{tabular}{lcccc}
713     \toprule
714 \multirow{2}*{Method} & \multicolumn{3}{c}{New CI}\\
715  & $m^n=y^n~mod~N$&no mark&$g_2()$\\ \cmidrule(r){2-4}
716 %$w^{j}$ & $\{1,..,8\}$ & $\{1,..,8\}$ & $\{1,..,8\}$ & $\{1,..,5\}$ & $\{1,..,5\}$ &$\{1,..,5\}$ \\ \hline \hline
717 Frequency (Monobit) Test                        &0.00040        &0.08556                &0.41943\\ 
718 Frequency Test within a Block                   &0              &0                      &0.67862\\ 
719 Runs Test                                       &0.28966        &0.55448                &0.33452\\ 
720 Longest Run of Ones in a Block Test             &0.01096        &0.43723                &0.88313 \\ 
721 Binary Matrix Rank Test                         &0              &0.65794                &0.75972\\ 
722 Discrete Fourier Transform (Spectral) Test      &0              &0                      &0.00085 \\ 
723 Non-overlapping Template Matching Test*         &0.02007        &0.37333                &0.51879\\ 
724 Overlapping Template Matching Test              &0              &0                      &0.24924\\ 
725 Maurer's ``Universal Statistical'' Test         &0.69936        &0.96424                &0.12963\\ 
726 Linear Complexity Test                          &0.36699        &0.92423                &0.35045\\ 
727 Serial Test* (m=10)                             &0              &0.28185                &0.25496\\ 
728 Approximate Entropy Test (m=10)                 &0              &0.38381                &0.75971\\ 
729 Cumulative Sums (Cusum) Test*                   &0              &0                      &0.34245\\ 
730 Random Excursions Test*                         &0.46769        &0.34788                &0.18977\\ 
731 Random Excursions Variant Test*                 &0.28779        &0.46505                &0.26563\\ \hline
732 Success                                         &8/15           &11/15                  &15/15\\ 
733 \bottomrule
734 \end{tabular}
735 \end{table}
736
737 We can conclude from Table \ref{The passing rate1} that the worst situations are obtained with the New CI ($m^n=y^n~mod~N$) and New CI (no mark) generators. %: they just can be observed that 8 and 11 out of 15 of the tests are failed. However,
738 New CI ($m^n=g_2(y^n)$) as New CI ($m^n=g_1(y^n)$) in Table~\ref{The passing for new CI} has successfully passed the NIST statistical test suite.
739
740 \begin{table}[!t]
741 \renewcommand{\arraystretch}{1.3}
742 \caption{NIST SP 800-22 test results ($\mathbb{P}_T$) for new CI algorithms}
743 \label{The passing for new CI}
744 \centering
745   \begin{tabular}{lccc}
746     \toprule
747 \multirow{4}*{Test name} & \multicolumn{3}{c}{New CI}\\
748 & XORshift& ISAAC&ISAAC  \\ 
749 & +& + & + \\ 
750 & XORshift& XORshift&ISAAC  \\  \cmidrule(r){2-4}
751 Frequency (Monobit) Test                        &0.47498                &0.88317                &0.83430 \\ 
752 Frequency Test within a Block                   &0.89776                &0.40119                &0.33453  \\ 
753 Runs Test                                       &0.81653                &0.31908                &0.00576  \\ 
754 Longest Run of Ones in a Block Test             &0.79813                &0.06688                &0.47498   \\
755 Binary Matrix Rank Test                         &0.26224                &0.88317                &0.69931  \\ 
756 Discrete Fourier Transform (Spectral) Test      &0.00716                &0.33453                &0.59559   \\ 
757 Non-overlapping Template Matching Test*         &0.44991                &0.46467                &0.51446 \\ 
758 Overlapping Template Matching Test              &0.51412                &0.69931                &0.88317  \\ 
759 Universal Statistical Test                      &0.67868                &0.24928                &0.06282   \\ 
760 Linear Complexity Test                          &0.65793                &0.65793                &0.94630     \\ 
761 Serial Test* (m=10)                             &0.42534                &0.90619                &0.44137   \\ 
762 Approximate Entropy Test (m=10)                 &0.63719                &0.22482                &0.13728  \\ 
763 Cumulative Sums (Cusum) Test*                   &0.27968                &0.84065                &0.14139 \\ 
764 Random Excursions Test*                         &0.28740                &0.30075                &0.34625   \\ 
765 Random Excursions Variant Test*                 &0.48668                &0.34294                &0.55048    \\ \hline
766 Success                                         & 15/15                 &15/15          &15/15   \\ 
767 \bottomrule
768   \end{tabular}
769 \end{table}
770
771 \subsection{Results of Diehard}
772 \label{Subsec:DieHARD}
773
774 Table~\ref{Results of DieHARD battery of tests for new CI algorithms} gives the results derived from applying the DieHARD battery of tests to the PRNGs considered in this work. 
775
776 \begin{tiny}
777 \begin{table}[!t]
778 \renewcommand{\arraystretch}{1.3}
779 \caption{Results of DieHARD battery of tests for new CI algorithms ($\mathsf{N}=32$)}
780 \label{Results of DieHARD battery of tests for new CI algorithms}
781 \centering
782 \begin{tabular}{llcccc} \toprule
783 \multirow{3}*{No.} &\multirow{3}*{Test name} & \multicolumn{4}{c}{New CI}\\
784 &&Logistic& XORshift& ISAAC&ISAAC  \\ 
785 &&+& +& + & + \\ 
786 &&Logistic& XORshift& XORshift&ISAAC \\ \cmidrule(r){3-6}
787 1 & Overlapping Sum &Pass &Pass &Pass&Pass\\
788 2 & Runs Up 1 &Pass & Pass &Pass&Pass\\
789 &Runs Down 1 &Pass &Pass &Pass&Pass\\
790 &Runs Up 2 & Pass &Pass &Pass&Pass\\
791 &Runs Down 2 &Pass & Pass &Pass&Pass\\
792 3 & 3D Spheres &Pass &Pass &Pass&Pass\\
793 4 & Parking Lot &Pass &Pass &Pass&Pass\\
794 5 & Birthday Spacing &Pass &Pass &Pass&Pass\\
795 6 & Count the ones 1 &Pass &Pass &Pass&Pass\\
796 7 &Binary Rank $6 \times 8$ &Pass & Pass &Pass&Pass\\
797 8 &Binary Rank $31 \times 31$ &Pass &Pass &Pass&Pass\\
798 9 &Binary Rank $32 \times 32$ &Pass &Pass &Pass&Pass\\
799 10 &Count the ones 2 &Pass &Pass&Pass&Pass \\
800 11 &Bit Stream &Pass &Pass&Pass&Pass \\
801 12 &Craps Wins &Pass &Pass&Pass&Pass \\
802 &Throws &Pass &Pass &Pass&Pass\\
803 13 &Minimum Distance &Pass &Pass &Pass&Pass\\
804 14 &Overlapping Perm. &Pass &Pass &Pass&Pass\\
805 15 &Squeeze &Pass &Pass&Pass&Pass \\
806 16 &OPSO &Pass &Pass&Pass&Pass \\
807 17 &OQSO &Pass &Pass&Pass&Pass \\
808 18 &DNA &Pass &Pass&Pass &Pass\\
809 &Number of tests passed &18 &18 &18&18\\\bottomrule
810 \end{tabular}
811 \end{table}
812 \end{tiny}
813
814 \subsection{Results of comparative test parameters}
815
816
817
818 \begin{table}[!t]
819 \renewcommand{\arraystretch}{1.3}
820 \caption{Comparative test parameters for new CI(X,Y) with a $10^7$ bits sequence ($\mathsf{N}=32$)}
821 \label{Comparison2 for new CI algorithms}
822 \centering
823   \begin{tabular}{lcccc}
824     \toprule
825 \multirow{4}*{Method} &\multirow{4}*{Threshold values}  & \multicolumn{3}{c}{New CI}\\
826 && XORshift& ISAAC&ISAAC  \\ 
827 && +& + & + \\ 
828 && XORshift& XORshift&ISAAC \\ \cmidrule(r){2-5}
829 Monobit                 &3.8415                         &3.5689         &0.9036         &0.5788 \\ \hline
830 Serial                  &5.9915                         &3.5765         &1.1229         &0.7378  \\ \hline
831 Poker                   &316.9194                       &123.6831       &173.8604               &179.8609  \\ \hline
832 Runs                    &55.0027                        &28.4237        &40.4606        &29.4057   \\ \hline
833 Autocorrelation         &1.6449                         &0.3403         &0.1245         &-2.0276 \\ \bottomrule
834   \end{tabular}
835 \end{table}
836
837 We show in Table~\ref{Comparison2 for new CI algorithms} a comparison between New CI(XORshift, XORshift), New CI(ISAAC, XORshift), and New CI(ISAAC, ISAAC). %The comparative test is related to the duration needed by each algorithm to generate a $10^7$ bits long sequence. 
838
839 \subsection{Results of TestU01}
840
841
842 Table~\ref{TestU01 for new CI} gives the results derived from applying the TestU01 battery of tests to the PRNGs considered in this work.
843 \begin{table}[!t]
844 \renewcommand{\arraystretch}{1.3}
845 \caption{TestU01 Statistical Test for new CI algorithms ($\mathsf{N}=32$)}
846 \label{TestU01 for new CI}
847 \centering
848   \begin{tabular}{lccccc}
849     \toprule
850 \multirow{4}*{Test name} &&& \multicolumn{3}{c}{New CI}\\
851 &&&Logistic& ISAAC&ISAAC  \\ 
852 &&&+& +& + \\ 
853 &&&Logistic& XORshift&ISAAC  \\ \cmidrule(r){4-6}
854 Rabbit                          &$32\times10^9$ bits    &38     &0      &0      &0               \\
855 Alphabit                        &$32\times10^9$ bits    &17     &0      &0      &0               \\
856 Pseudo DieHARD                  &Standard               &126    &0      &0      &0              \\
857 FIPS\_140\_2                    &Standard               &16     &0      &0      &0              \\
858 Small Crush                     &Standard               &15     &0      &0      &0               \\
859 Crush                           &Standard               &144    &0      &0      &0               \\
860 Big Crush                       &Standard               &160    &0      &0      &0               \\ \hline
861 Number of failures              &                       &       &0      &0      &0               \\
862 \bottomrule
863   \end{tabular}
864 \end{table}
865
866
867 \subsection{Conclusion}
868 In a sound theoretical basis, a New PRNG based on discrete chaotic iterations (CI) is a composite generator which combines the features of two PRNGs. The first generator constitutes the initial condition of the chaotic dynamical system. The second generator randomly chooses which outputs of the chaotic system must be returned. The intention of this combination is to cumulate the effects of chaotic and random behaviors, to improve the statistical and security properties relative to each generator taken alone.
869
870 This New CI PRNG based on discrete chaotic iterations may utilize any reasonable RNG as inputs. For demonstration purposes, XORshift and ISAAC are adopted here. 
871
872 The results of the TestU01, NIST, Comparative test parameters and DieHARD batteries of tests confirm that the proposed New CI PRNGs are all able to pass these tests. And it is better than Old CI algorithms
873
874 The improvement clearly appears in the TestU01 results: i.e. XORshift alone fails 142 of these tests, whereas  Old CI(XORshift, XORshift) fails 9 out of 518, New CI(XORshift, XORshift) can pass all the tests. 
875
876 Detail comparative analysis will be presented in the next section.
877
878
879 \section{Assessment of two chaotic iterations schemes based on XORshift Generator}
880
881 \subsection{NIST}
882
883 In our experiments, 100 sequences (s = 100) of 1,000,000 bits are generated and tested. If the value $\mathbb{P}_T$ of any test is smaller than 0.0001, the sequences are considered to not be good enough and the generator is unsuitable. Table~\ref{The passing} shows $\mathbb{P}_T$ of the sequences based on discrete chaotic iterations using different schemes. If there are at least two statistical values in a test, this test is marked with an asterisk and the average value is computed to characterize the statistical values. 
884 We can conclude from Table \ref{The passing} that XORshift has failed 1 test, whereas both the old generator and CI(XORshift, XORshift) have successfully passed the NIST statistical test suite. This result shows the good behavior of both PRNGs in the aforementioned basic tests that evaluate the independence of real numbers.
885
886 \begin{table}[!t]
887 \renewcommand{\arraystretch}{1.3}
888 \caption{NIST SP 800-22 test results ($\mathsf{N}=32$)}
889 \label{The passing}
890 \centering
891   \begin{tabular}{|l||c|c|c|}
892     \hline
893 Method &XORshift& Old CI & New CI  \\ \hline\hline
894
895 Frequency (Monobit) Test                        &0.145326&0.595549&0.474986 \\ \hline
896 Frequency Test within a Block                   &0.455937&0.554420&0.897763  \\ \hline
897 Runs Test                                       &0.213309&0.455937&0.816537 \\ \hline
898 Longest Run of Ones in a Block Test             &0.289667&0.016717&0.798139   \\ \hline
899 Binary Matrix Rank Test                         &0.000000&0.616305&0.262249  \\ \hline
900 Discrete Fourier Transform (Spectral) Test      &0.005358&0.000190&0.007160   \\ \hline
901 Non-overlapping Template Matching Test*         &0.503652&0.532252&0.449916 \\ \hline
902 Overlapping Template Matching Test              &0.867692&0.334538&0.514124  \\ \hline
903 Universal Statistical Test                      &0.275709&0.032923&0.678686  \\ \hline
904 Linear Complexity Test                          &0.924076&0.401199&0.657933    \\ \hline
905 Serial Test* (m=10)                             &0.757925&0.013396&0.425346  \\ \hline
906 Approximate Entropy Test (m=10)                 &0.419021&0.137282&0.637119  \\ \hline
907 Cumulative Sums (Cusum) Test*                   &0.8115445&0.046464&0.279680\\ \hline
908 Random Excursions Test*                         &0.4192395&0.503622&0.287409   \\ \hline
909 Random Excursions Variant Test*                 &0.5283333&0.347772&0.486686    \\ \hline
910 Success                                         & 14/15   & 15/15  & 15/15 \\ \hline
911
912   \end{tabular}
913 \end{table}
914
915 \subsection{Diehard}
916 \label{Subsec:DieHARD}
917
918 Table~\ref{Results of DieHARD battery of tests} gives the results derived from applying the DieHARD battery of tests to the PRNGs considered in this work. As it can be observed, the results of the individual tests Count the ones 1, Binary Rank $31 \times 31$ and Binary Rank $32 \times 32$ show that in the random numbers obtained with the XORshift generator only the least significant bits seem to be independent. This explains the poor behavior of this PRNG in the aforementioned basic tests that evaluate the independence of real numbers. But the generator based on discrete chaotic iterations (New CI and Old CI PRNG) can pass all the DieHARD battery of tests. 
919 This proves that the
920 security of the given generator has been improved by chaotic iterations.
921
922 \begin{tiny}
923 \begin{table}[!t]
924 \renewcommand{\arraystretch}{1.3}
925 \caption{Results of DieHARD battery of tests ($\mathsf{N}=32$)}
926 \label{Results of DieHARD battery of tests}
927 \centering
928 \begin{tabular}{llccc} \toprule
929 \textbf{No.} &\textbf{Test name} &\multicolumn{3}{c}{\textbf{Generators}} \\ \cmidrule(r){3-5}
930 & & XORshift &  Old CI & New CI\\ \midrule
931 1 & Overlapping Sum &Pass &Pass &Pass\\
932 2 & Runs Up 1 &Pass & Pass &Pass\\
933 &Runs Down 1 &Pass &Pass &Pass\\
934 &Runs Up 2 & Pass &Pass &Pass\\
935 &Runs Down 2 &Pass & Pass &Pass\\
936 3 & 3D Spheres &Pass &Pass &Pass\\
937 4 & Parking Lot &Pass &Pass &Pass\\
938 5 & Birthday Spacing &Pass &Pass &Pass\\
939 6 & Count the ones 1 &Fail &Pass &Pass\\
940 7 &Binary Rank $6 \times 8$ &Pass & Pass &Pass\\
941 8 &Binary Rank $31 \times 31$ &Fail &Pass &Pass\\
942 9 &Binary Rank $32 \times 32$ &Fail &Pass &Pass\\
943 10 &Count the ones 2 &Pass &Pass&Pass \\
944 11 &Bit Stream &Pass &Pass&Pass \\
945 12 &Craps Wins &Pass &Pass&Pass \\
946 &Throws &Pass &Pass &Pass\\
947 13 &Minimum Distance &Pass &Pass &Pass\\
948 14 &Overlapping Perm. &Pass &Pass &Pass\\
949 15 &Squeeze &Pass &Pass&Pass \\
950 16 &OPSO &Pass &Pass&Pass \\
951 17 &OQSO &Pass &Pass&Pass \\
952 18 &DNA &Pass &Pass&Pass \\
953 &Number of tests passed &15 &18 &18\\\bottomrule
954 \end{tabular}
955 \end{table}
956 \end{tiny}
957
958 \subsection{Comparative test parameters}
959
960 \begin{table}
961 \renewcommand{\arraystretch}{1.3}
962 \caption{Comparison with Old CI(XORshift,XORshift) for a $2 \times 10^5$ bits sequence  ($\mathsf{N}=32$)}
963 \label{Comparison22}
964 \centering
965   \begin{tabular}{lcccc}
966     \toprule
967 Method &The threshold values&XORshift& Old CI& New CI \\ \hline
968    
969 Monobit                 &3.8415         &1.7053         &2.7689         &0.3328  \\ \hline
970 Serial                  &5.9915         &2.1466         &2.8765         &0.7441           \\ \hline
971 Poker                   &316.9194       &248.9318       &222.3683       &262.8173                \\ \hline
972 Runs                    &55.0027        &18.0087        &21.9272        &16.7877           \\ \hline
973 Autocorrelation         &1.6449         &0.5009         &0.0173         &0.0805           \\ \hline
974 Time                    &Second         &0.096s         &0.3625s        &0.197s           \\ 
975     \bottomrule
976   \end{tabular}
977 \end{table}
978
979
980
981 We show in Table~\ref{Comparison22} a comparison between our new generator New CI(XORshift, XORshift), its old version denoted Old CI(XORshift, XORshift), and a PRNG based on a simple XORshift. Time (in seconds) is related to the duration needed by each algorithm to generate a $2 \times 10^5$ bits long sequence. The test has been conducted using the same computer and compiler with the same optimization settings for both algorithms, in order to make it as fair as possible. 
982 The results confirm that the proposed generator is a lot faster than the old one, while the statistical results are better for most of the parameters, leading to the conclusion that the new PRNG is more secure than the old one. % The main advantage of our new method lies in its flexibility, therefore optimizing for higher speeds, better security or low memory requirements.
983
984
985 \begin{figure}
986 \centering
987 % \psfig{figure=2.eps,height=5in,width=3.5in}
988 \includegraphics[scale=0.4]{images/monobits.eps}
989 % \includegraphics[width=3.7in]{4tests.eps}
990 \caption{Comparison of monobits tests}
991 \label{monobits}
992 \end{figure}
993
994 As a comparison of the overall stability of these PRNGs, similar tests have been computed for different sequence lengths (see Figures \ref{monobits} - \ref{autocorrelation}).
995 For the monobit test comparison (Figure \ref{monobits}), XORshift and New CI(XORshift, XORshift) PRNGs present the same issue: the beginning values are a little high. However, for our new generator, the values are stable in a low level which never exceeds 1.2. Indeed, the new generator distributes very randomly the zeros and ones, whatever the length of the desired sequence. 
996 It can also be remarked that the old generator presents the worst performance, but the values are  still within the standard boundary.
997 % The main advantage of our new method lies in its flexibility, therefore optimizing for higher speeds, better security or low memory requirements.
998
999 \begin{figure}
1000 \centering
1001 % \psfig{figure=2.eps,height=5in,width=3.5in}
1002 \includegraphics[scale=0.4]{images/serial.eps}
1003 % \includegraphics[width=3.7in]{4tests.eps}
1004 \caption{Comparison of serial tests}
1005 \label{serial}
1006 \end{figure}
1007
1008 Figure \ref{serial} shows the serial test comparison. The new generator outperforms this test, but the score of the old generator is not bad either: their occurrences of 00, 01, 10, and 11 are very close to each other.% As the same with monobit test, this phenomenon is attributed to the effect of iteration computation.
1009
1010 \begin{figure}
1011 \centering
1012 % \psfig{figure=2.eps,height=5in,width=3.5in}
1013 \includegraphics[scale=0.4]{images/poker.eps}
1014 % \includegraphics[width=3.7in]{4tests.eps}
1015 \caption{Comparison of poker tests}
1016 \label{poker}
1017 \end{figure}
1018
1019 The poker test comparison with $m=8$ is shown in Figure \ref{poker}. XORshift is the most stable generator in all of these tests, but not better than Old CI(XORshift, XORshift) PRNG. 
1020 Our new generator presents a trend, with a maximum in the neighborhood of $1.7 \times 10^5$. These scores are not so good, even though the new generator has a better behavior than the old one and XORshift. 
1021 %The reasons explaining this bad result can be, among other:
1022 Indeed, the value of $m$ and the length of the sequences should be enlarged to be certain that the chaotic iterations express totally their complex behavior. In that situation, the performances of our generators in the poker test can be improved.
1023 %but here we only achieve $2 \times 10^5$ sequence length, then m must be smaller than 13 to comply with the rule, if the sequence length is more, the performance of CI might be better.
1024
1025 \begin{figure}
1026 \centering
1027 % \psfig{figure=2.eps,height=5in,width=3.5in}
1028 \includegraphics[scale=0.4]{images/runs.eps}
1029 % \includegraphics[width=3.7in]{4tests.eps}
1030 \caption{Comparison of runs tests}
1031 \label{runs}
1032 \end{figure}
1033
1034 The graph of the new generator is the most stable one during the runs test comparison (Figure \ref{runs}). Moreover, this trend is reinforced when the lengths of the tested sequences are increased.
1035
1036
1037 \begin{figure}
1038 \centering
1039 % \psfig{figure=2.eps,height=5in,width=3.5in}
1040 \includegraphics[scale=0.4]{images/autocorrelation1.eps}
1041 % \includegraphics[width=3.7in]{4tests.eps}
1042 \caption{Comparison of autocorrelation tests}
1043 \label{autocorrelation}
1044 \end{figure}
1045
1046
1047 The comparison of autocorrelation tests is presented in Figure \ref{autocorrelation}. The new generator clearly dominates these tests, whereas the score of the old generator is also not bad. This difference between two generators based on chaotic iterations can be explained by the fact that the improvements realized to define the new generator lead to a more randomly output.
1048
1049 To sum up we can claim that the new generator, which is faster than its former version, outperforms all of the other generators in these statistical tests, especially when producing long output sequences.
1050
1051
1052
1053
1054 \subsection{A flexible output}
1055
1056 We assume that the initial state $X$ is given as arrays of N-bit integers. Thus, the output size can be flexibly chosen  as well as $N$. Our PRNGs can generate discrete numbers
1057 where the number of states could not match to a power of 2, which is suitable for stochastic differential equations as an example.(An attractive property of discrete random numbers is that they
1058 require a small number of random bits--3 bits)~\cite{Ladd20092140}.
1059 Moreover, due to the fact that CI process is a simple bitwise change, the speed of output integers and binary numbers is almost the same. 
1060
1061 In the following section, we will discuss the security level for various $N$ by Statistical test.
1062 For both CI generator, various $N$ can pass all the NIST and DIEHARD test. Table~\ref{TestU01 Statistical Test} gives the results derived from applying the TestU01 battery of tests to the PRNGs considered in this work. As observed,  we can conclude that the effective range of $N$ for new CI is bigger than for old CI by TestU01. And also, this new scheme for obtaining a PRNG by combining two XORshift generators in CI give better properties than the old one (and the individual XORshift alone). It can be observed that the XORshift generator fails 146 tests.
1063
1064 \begin{table}[!t]
1065 \begin{small}
1066 \centering
1067 \renewcommand{\arraystretch}{1.3}
1068 \caption{TestU01 Statistical Test}
1069 \label{TestU01 Statistical Test}
1070 \centering
1071 \begin{tabular}{cccccccccc}\toprule
1072 \textbf{CI PRNG}&\textbf{Battery}&\textbf{N=2}&\textbf{N=4}&\textbf{N=8}&\textbf{N=16}&\textbf{N=32} \\\midrule
1073
1074 \multirow{7}*{\textbf{Old CI}}&Rabbit                                           &2      &2      &2      &2      &3 \\
1075 \multirow{7}*{\textbf{(XORshift,XORshift)}}&Alphabit                            &0      &0      &0      &2      &2 \\
1076 &Pseudo DieHARD                                                                 &0      &0      &0      &0      &0 \\
1077 &FIPS\_140\_2                                                                   &0      &0      &0      &0      &0 \\
1078 &Small Crush                                                                    &0      &0      &0      &1      &0 \\
1079 &Crush                                                                          &4      &4      &9      &16     &46 \\
1080 &Big Crush                                                                      &5      &3      &18     &30     &78 \\ 
1081 \\
1082 &Number of failures                                                             &11     &9      &29     &51     &129 \\
1083 \bottomrule
1084
1085 \multirow{7}*{\textbf{New CI}}&Rabbit                                           &0      &0      &0      &0      &0 \\
1086 \multirow{7}*{\textbf{(XORshift,XORshift)}}&Alphabit                            &4      &0      &0      &0      &0 \\
1087 &Pseudo DieHARD                                                                 &8      &2      &0      &0      &0 \\
1088 &FIPS\_140\_2                                                                   &2      &0      &0      &0      &0 \\
1089 &Small Crush                                                                    &0      &0      &0      &0      &0 \\
1090 &Crush                                                                          &0      &0      &0      &0      &0 \\
1091 &Big Crush                                                                      &0      &0      &0      &0      &0 \\ 
1092 \\
1093 &Number of failures                                                             &14     &2      &0      &0      &0 \\
1094 \bottomrule
1095 \end{tabular}
1096 \end{small}
1097 \end{table}
1098