## 4 Application to Random Bit Generation  
As an additional application of the proposed system, we will consider the design of a random bit generator (PRBG). The problem consists of designing a simple rule to generate a bit sequence, using the values of the states of a chaotic system [10, 41, 42, 43, 44, 45, 46, 47]. The resulting bit sequence, also called bitstream, should have the statistical properties of a random sequence. This can be tested through a series of statistical tests, provided by the National Institute of Standards and Technology (NIST) [48]. The test suite consists of 15 statistical tests. Each test returns a \(p\)-value, and if it is higher than a chosen significance level, the test is considered successful and the bitstream is considered random. The significance level here is taken as the default 0.01.  
The PRBG generates bits using the following simple rule. The system (1) is simulated using _ode45_ in Matlab, with a simulation step of \(h=0.01\). Then, in each discrete time instance \(i\), the following rule is applied to generate the bitstream:  
\[Z_{i} = [10^{7}\cdot x_{i},10^{8}\cdot y_{i},10^{9}\cdot z_{i}] \tag{2}\] \[B_{i} = \lfloor mod(Z_{i},2)\rfloor \tag{3}\]  
where \(x_{i},y_{i},z_{i}\) are the values of the states at the discrete time instance \(i\), and \(\lfloor\cdot\rfloor\) denotes the integer part of the argument. The coefficients \(10^{7},10^{8},10^{9}\) were chosen after some trial and error, until the obtained sequence was indeed random, as will be seen next. The complete bit sequence \(\mathcal{B}\) is obtained as  
\[\mathcal{B}=[B_{0},B_{1},B_{2},...] \tag{4}\]  
In addition, to reduce cross-correlation in the generated bitstreams, the first 200 s of the system simulation are discarded. It is clear that with the above rule, 3 bits can be generated in each discrete time. So, for example, given the time step \(h=0.01\), to generate \(3\cdot 10^{6}\) bits, the system (1) needs to be simulated for \(10^{4}+200\) s. Similar approaches were used in [42, 46, 49], using different operators to generate the bits.  
To test the algorithm, a sequence of \(50\cdot 10^{6}\) bits is generated and tested. The sequence was generated using parameter values \(a=0.65\), \(b=0.1\) and initial conditions \((0,0.1,0.1)\). The NIST test results are shown in Table 1. It can be seen that all tests are successful, so the resulting sequence is indeed random.  
In addition, Figure 15 depicts the autocorrelation and cross-correlation for a bit sequence of length \(10^{4}\). For a random bit sequence, the auto-correlation should have a delta form, while the cross-correlation should be close to zero [41]. This is indeed verified from the diagrams. For the cross-correlation, the initial conditions for the two bitstreams were chosen as \((0,0.1,0.1)\) and \((0,0.1,0.1+10^{-16})\).  
Finally, Table 2 shows a comparison between the key space of different generators.  
\begin{table}
\begin{tabular}{c c c c c} \hline \hline \multicolumn{5}{c}{**If \(p\geq\alpha\), the Test Is Successful**} \\ \hline
**No.** & **Statistical Test** & \(p\)**-Value** & **Proportion** & **Result** \\ \hline
1 & Frequency & 0.023545 & 50/50 & Success \\ \hline
2 & Block Frequency & 0.191687 & 49/50 & Success \\ \hline
3 & Cumulative Sums & 0.935716 & 49/50 & Success \\ \hline
4 & Runs & 0.171867 & 49/50 & Success \\ \hline
5 & Longest Run & 0.350485 & 49/50 & Success \\ \hline
6 & Rank & 0.935716 & 49/50 & Success \\ \hline
7 & FFT & 0.779188 & 50/50 & Success \\ \hline \hline \end{tabular}
\end{table}
Table 1: NIST statistical test results, if \(p\geq 0.01\), the test is successful.