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

Private GIT Repository
change .bib
[these_qian.git] / DesignofCIPRNG.tex
1 \chapter{Design of CI PRNG}
2 \label{Design of CI PRNG}
3 \minitoc
4 The designs of our two versions of CI pseudorandom number generators based on discrete chaotic iterations, satisfying Devaney's chaos, are proposed and discussed. Detail operations of this approach are described in this chapter, while their performance and a comparative study will be presented latter.
5
6
7 \section{The generation of pseudorandom sequence}
8 \label{The generation of pseudorandom sequence}
9 \subsection{The logistic map}
10
11 %Generating a pseudorandom sequence from the orbit of a real chaotic system requires mapping the state of the system to integer domain. Various methods have been proposed for the conversion of a real sequence into an integer sequence, two of them are recalled bellow.
12
13 The logistic map, given by:
14 \begin{center}
15 $x^{n+1}=\mu ~ x^{n}(1-x^{n})$, with $x^{0}\in(0,1)$, $\mu \in(3.99996,4]$,
16 \end{center}
17
18 \noindent was originally introduced as a demographic model by Pierre Fran\c cois Verhulst in 1838. In 1947, Ulam and Von Neumann ~\cite{ulam1947} studied it as a PRNG. This essentially requires mapping the states of the system $\left(x^n\right)_{n \in \mathds{N}}$ to $\{0,1\}^\mathds{N}$. A simple way for turning $x^n$ to a discrete bit symbol $r$ is by using a threshold function as it is shown in Algorithm~\ref{logisticmap1}.
19 A second usual way to obtain an integer sequence from a real system is to chop off the leading bits after moving the decimal point of each $x$ to the right, as it is obtained in Algorithm~\ref{logisticmap2}.
20
21 \begin{algorithm}
22 \textbf{Input:} the internal state $x$ (a decimal number)\\
23 \textbf{Output:} $r$ (a 1-bit word)
24 \begin{algorithmic}[1]
25 \STATE$x\leftarrow{4x(1-x)}$
26 \IF{$x\textless0$}
27 {
28 \STATE$r\leftarrow0$;   
29 }
30 \ELSE
31 {
32 \STATE$r\leftarrow1$;   
33 }\ENDIF
34 \STATE return $r$\;
35 \medskip
36 \caption{An arbitrary round of logistic map 1}
37 \label{logisticmap1}
38 \end{algorithmic}
39 \end{algorithm}
40
41 \begin{algorithm}
42 \textbf{Input:} the internal state $x$ (a decimal number)\\
43 \textbf{Output:} $r$ (an integer)
44 \begin{algorithmic}[1]
45 \STATE$x\leftarrow{4x(1-x)}$
46 \STATE$r\leftarrow{\lfloor10000000x\rfloor}$
47 \STATE return $r$\;
48 \medskip
49 \caption{An arbitrary round of logistic map 2}
50 \label{logisticmap2}
51 \end{algorithmic}
52 \end{algorithm}
53
54
55 \subsection{XORshift}
56 \label{XORshift}
57
58 XORshift is a category of very fast PRNGs designed by George Marsaglia~\cite{Marsaglia2003}.
59 It repeatedly uses the transform of \emph{exclusive or} (XOR) on a number with a bit shifted version of it. The state of a XORshift generator is a vector of bits. At each step, the next state is obtained by applying a given number of XORshift operations to $w$-bit blocks in the current state, where $w = 32$ or $64$. A XORshift operation is defined as follows. Replace the $w$-bit block by a bitwise XOR of the original block, with a shifted copy of itself by $a$ positions either to the right or to the left, where $ 0 < a < w$. This Algorithm~\ref{XORshift} has a period of $2^{32}-1=4.29\times10^9$.
60
61
62 \begin{algorithm}
63 \textbf{Input:} the internal state $z$ (a 32-bits word)\\
64 \textbf{Output:} $y$ (a 32-bits word)
65 \begin{algorithmic}[1]
66
67 \STATE$z\leftarrow{z\oplus{(z\ll13)}}$;
68 \STATE$z\leftarrow{z\oplus{(z\gg17)}}$;
69 \STATE$z\leftarrow{z\oplus{(z\ll5)}}$;
70 \STATE$y\leftarrow{z}$;
71 \STATE return $y$\;
72 \medskip
73 \caption{An arbitrary round of XORshift algorithm}
74 \label{XORshift}
75 \end{algorithmic}
76 \end{algorithm}
77
78 \subsection{ISAAC}
79 ISAAC is an array-based PRNG and a stream cipher designed by Robert Jenkins (1996) to be cryptographically secure~\cite{Jenkins1996}. The name is an acronym for Indirection, Shift, Accumulate, Add and Count. The ISAAC algorithm has similarities with RC4. It uses an array of 256 32-bit integers as the internal state, writing the results to another 256-integer array, from which they are read one at a time until empty, at which point they are recomputed. Since it only takes about 19 32-bit operations for each 32-bit output word, it is extremely fast on 32-bit computers.\newline
80 We give the key-stream procedure of ISAAC in Algorithm~\ref{ISAAC}. The internal state is $x$, the output array is $r$, and the inputs $a$, $b$, and $c$ are those computed in the previous round. % So we need the initial values of a,b, and c. Yes.
81 The value $f(a,i)$ in Table~\ref{ISAAC} is a 32-bit word, defined for all $a$ and $i\in\{0,\dots,255\}$ as:
82
83 \begin{equation}
84 f(a,i) = \left\{\begin{array}{ll}
85 a\ll13 & \text{if } i\equiv0~mod~4 , \\
86 a\gg6 & \text{if } i\equiv1~mod~4 , \\
87 a\ll2 & \text{if } i\equiv2~mod~4 , \\
88 a\gg16 & \text{if } i\equiv3~mod~4 . \\
89 \end{array}
90 \right.
91 \end{equation}
92
93 \begin{algorithm}
94 \textbf{Input:} $a$, $b$, $c$, and the internal state $x$\\
95 \textbf{Output:} an array $r$ of 256 32-bit words
96 \begin{algorithmic}[1]
97 \STATE$c\leftarrow{c+1}$;
98 \STATE$b\leftarrow{b+c}$;
99 \WHILE{$i=0,\dots,255$}
100 \STATE$s\leftarrow{x_i}$;
101 \STATE$a\leftarrow{f(a,i)+x_{(i+128)~mod~256}}$;
102 \STATE$x_i\leftarrow{a+b+x_{(x\gg2)~mod~256}}$;
103 \STATE$r_i\leftarrow{s+x_{(x_i\gg10)~mod~256}}$;
104 \STATE$b\leftarrow{r_i}$;
105 \ENDWHILE
106 \STATE return $r$\;
107 \medskip
108 \caption{An arbitrary round of ISAAC algorithm}
109 \label{ISAAC}
110 \end{algorithmic}
111 \end{algorithm}
112
113 \section{A Theoretical Proof for Devaney's Chaotic Dynamical Systems}
114 \label{A theoretical proof for Devaney's chaotic dynamical systems}
115 The outline proofs, of the properties on which our PRNG is based, are given in this section. 
116
117 \subsection{A topological approach for chaotic iterations}
118
119 Denote by $\delta $ the \emph{discrete boolean metric}, $\delta
120 (x,y)=0\Leftrightarrow x=y.$ Given a function $f$, define the function $%
121 F_{f}:$ $\llbracket1;\mathsf{N}\rrbracket\times \mathds{B}^{\mathsf{N}%
122 }\longrightarrow \mathds{B}^{\mathsf{N}}$ such that $$F_{f}(k,E)=\left(
123 E_{j}.\delta (k,j)+f(E)_{k}.\overline{\delta (k,j)}\right) _{j\in \llbracket%
124 1;\mathsf{N}\rrbracket},$$ where + and . are the boolean addition and product operations.
125
126 Consider the phase space: $\mathcal{X}=\llbracket1;\mathsf{N}\rrbracket^{%
127 \mathds{N}}\times \mathds{B}^{\mathsf{N}}$ and the map $$G_{f}\left( S,E\right) =\left( \sigma
128 (S),F_{f}(i(S),E)\right) ,$$ then the chaotic iterations defined in (\ref{Chaotic iterations}) can be described by the following iterations \cite{guyeux09}
129 \[
130 \left\{
131 \begin{array}{l}
132 X^{0}\in \mathcal{X} \\
133 X^{k+1}=G_{f}(X^{k}).%
134 \end{array}%
135 \right.
136 \]
137
138 Let us define a new distance between two points $(S,E),(\check{S},\check{E})\in
139 \mathcal{X}$ by $$d((S,E);(\check{S},\check{E}))=d_{e}(E,\check{E})+d_{s}(S,%
140 \check{S}),$$ where
141 \begin{itemize}
142 \item $\displaystyle{d_{e}(E,\check{E})}=\displaystyle{%
143 \sum_{k=1}^{\mathsf{N}}\delta (E_{k},\check{E}_{k})} \in \llbracket 0 ; \mathsf{N} \rrbracket$ \\
144 \item $\displaystyle{%
145 d_{s}(S,\check{S})}=\displaystyle{\dfrac{9}{\mathsf{N}}\sum_{k=1}^{\infty }%
146 \dfrac{|S^{k}-\check{S}^{k}|}{10^{k}}} \in [0 ; 1].$
147 \end{itemize}
148
149 \medskip
150
151 It is then proven in \cite{guyeux09} by using the sequential continuity that
152
153
154
155 \begin{proposition}
156 \label{continuite} $G_f$ is a continuous function on $(\mathcal{X},d)$.
157 \end{proposition}
158
159 \subsection{Regularity}
160
161 \label{regularite}
162
163 \begin{theorem}
164 Periodic points of $G_{f}$ are dense in $\mathcal{X}$.
165 \end{theorem}
166
167 \begin{proof}
168 Let $(S,E)\in \mathcal{X}$, and $\varepsilon >0$. We are looking for a
169 periodic point $(S^{\prime },E^{\prime })$ satisfying $d((S,E);(S^{\prime
170 },E^{\prime }))<\varepsilon$.
171
172 We choose $E^{\prime }=E$, and we reproduce enough entries from $S$ to $%
173 S^{\prime }$ so that the distance between $(S^{\prime },E)$ and $(S,E)$ is
174 strictly less than $\varepsilon $: a number $k=\lfloor log_{10}(\varepsilon
175 )\rfloor +1$ of terms is sufficient.\newline
176 After this $k^{th}$ iterations, the new common state is $\mathcal{E}$, and
177 strategy $S^{\prime }$ is shifted of $k$ positions: $\sigma ^{k}(S^{\prime })$.\newline
178 Then we have to complete strategy $S^{\prime }$ in order to make $(E^{\prime
179 },S^{\prime })$ periodic (at least for sufficiently large indices). To do
180 so, we put an infinite number of 1 to the strategy $S^{\prime }$.
181
182 Then, either the first state is conserved after one iteration, so $\mathcal{E%
183 }$ is unchanged and we obtain a fixed point. Or the first state is not
184 conserved, then: if the first state is not conserved after a second
185 iteration, then we will be again in the first case above (due to the fact that a state is a boolean). Otherwise the first state is conserved, and we have
186 indeed a fixed (periodic) point.
187
188 Thus, there exists a periodic point into every neighbourhood of any point, so 
189 $(\mathcal{X},G_f)$ is regular, for any map $f$.
190 \end{proof}
191
192 \subsection{Transitivity}
193
194 \label{transitivite} Contrary to the regularity, the topological
195 transitivity condition is not automatically satisfied by any function \newline ($
196 f=Identity$ is not topologically transitive). Let us denote by $\mathcal{T}$
197 the set of maps $f$ such that $(\mathcal{X},G_{f})$ is topologically
198 transitive.
199
200 \begin{theorem}
201 $\mathcal{T}$ is a nonempty set.
202 \end{theorem}
203
204 \begin{proof}
205 We will prove that the vectorial logical negation function $f_{0}$
206
207 \begin{equation}
208 \begin{array}{rccc}
209 f_{0}: & \mathds{B}^{\mathsf{N}} & \longrightarrow & \mathds{B}^{\mathsf{N}}
210 \\ 
211 & (x_{1},\hdots,x_{\mathsf{N}}) & \longmapsto & (\overline{x_{1}},\hdots,%
212 \overline{x_{\mathsf{N}}}) \\ 
213 &  &  & 
214 \end{array}
215 \label{f0}
216 \end{equation}%
217 \noindent is topologically transitive.\newline
218 Let $\mathcal{B}_A=\mathcal{B}(X_{A},r_{A})$ and $\mathcal{B}_B=\mathcal{B}(X_{B},r_{B})$ be two
219 open balls of $\mathcal{X}$, where $X_A=(S_A,E_A)$, and $X_B=(S_B,E_B)$. Our goal is to start from a point of $\mathcal{B}_A$ and to arrive, after some iterations of $G_{f_0}$, in $\mathcal{B}_B$.\newline
220 We have to be close to $X_{A}$, then the starting state $E$ must be $E_{A}$; it
221 remains to construct the strategy $S$. Let $S^n = S_{A}^n, \forall n \leqslant n_0$, where $n_0$ is chosen in such a way that $(S,E_{A})\in \mathcal{B}_{A}$, and $E'$ be the state of $G_{f_0}^{n_0}(S_{A},E_{A})$.\newline
222 $E'$ differs from $E_{B}$ by a finite number of cells $c_1,\hdots, c_{n_1}$. Let $S^{n_0+n} = c_n, \forall n \leqslant n_1$. Then the state of $G_{f_0}^{n_0+n_1}(S,E)$ is $E_{B}$.\newline
223 Last, let $S^{n_0+n_1+n} = S_{B}^n, \forall n \leqslant n_2$, where $n_2$ is chosen in such a way that $G_{f_0}^{n_0+n_1}(S,E)$ is at a distance less than $r_B $ from $(S_{B},E_{B})$. Then, starting from a point $(S,E)$ close to $X_A$, we are close to $X_B$ after $n_0+n_1$ iterations: $(\mathcal{X},G_{f_0})$ is transitive.
224 \end{proof}
225
226 \subsection{Sensitive dependence on initial conditions}
227
228 \label{sensibilite}
229
230 \begin{theorem}
231 $(\mathcal{X},G_{f_0})$ has sensitive dependence on initial conditions, and
232 its constant of sensitiveness is equal to $\mathsf{N}$.
233 \end{theorem}
234
235 \begin{proof}
236 Let $(S,E) \in \mathcal{X}$, and $\delta>0$. A new point $(S',E')$ is defined by: $E'=E$, $S'^n = S^n, \forall n \leqslant n_0$, where $n_0$ is chosen in such a way that $d((S,E);(S',E'))<\delta$, and $S'^{n_0+k} = k, \forall k \in \llbracket 1; \mathsf{N} \rrbracket$.
237
238 \noindent Then the point $(S',E')$ is as close as we want than $(S,E)$, and systems of $G_{f_0}^{k+\mathsf{N}}(S,E)$ and $G_{f_0}^{k+\mathsf{N}}(S',E')$ have no cell presenting the same state: distance between this two points is greater or equal than $\mathsf{N}$.
239 \end{proof}
240
241 \begin{remark}
242 This sensitive dependence could be stated as a consequence of regularity and
243 transitivity (by using the theorem of Banks~\cite{Banks92}). However, we have
244 preferred proving this result independently of regularity, because the
245 notion of regularity must be redefined in the context of the finite set of
246 machine numbers.
247 \end{remark}
248
249 \subsection{Devaney's Chaotic Dynamical Systems}
250 Then, the vectorial negation $f_{0}(x_{1},%
251 \hdots,x_{\mathsf{N}})=(\overline{x_{1}},\hdots,\overline{x_{\mathsf{N}}})$ satisfies the three conditions for Devaney's chaos, namely, regularity, transitivity, and sensitivity in the metric space $(\mathcal{X},d)$. This leads to the following result.
252
253
254
255 \begin{proposition}
256 $G_{f_0}$ is a chaotic map on $(\mathcal{X},d)$ in the sense of Devaney.
257 \end{proposition}
258
259
260
261
262
263
264 \section{Old CI algorithms and examples}
265 \label{Old CI algorithms and examples}
266 \subsection{Chaotic iterations as PRNG}
267 \label{subsec Chaotic iterations as PRNG}
268 Our generator denoted by CI(PRNG1,PRNG2) is designed by the following process. 
269
270 Let $\mathsf{N} \in \mathds{N}^*, \mathsf{N} \geqslant 2$. Some chaotic iterations are fulfilled to generate a sequence $\left(x^n\right)_{n\in\mathds{N}} \in \left(\mathds{B}^\mathsf{N}\right)^\mathds{N}$ of boolean vectors: the successive states of the iterated system. Some of these vectors are randomly extracted and their components constitute our pseudorandom bit flow.
271
272 Chaotic iterations are realized as follows. Initial state $x^0 \in \mathds{B}^\mathsf{N}$ is a boolean vector taken as a seed and chaotic strategy $\left(S^n\right)_{n\in\mathds{N}}\in \llbracket 1, \mathsf{N} \rrbracket^\mathds{N}$ is constructed with PRNG2. Lastly, iterate function $f$ is the vectorial boolean negation
273 $$f_0:(x_1,...,x_\mathsf{N}) \in \mathds{B}^\mathsf{N} \longmapsto (\overline{x_1},...,\overline{x_\mathsf{N}}) \in \mathds{B}^\mathsf{N}.$$
274 To sum up, at each iteration only $S^i$-th component of state $X^n$ is updated, as follows
275 \begin{equation}
276 x_i^n = \left\{\begin{array}{ll}x_i^{n-1} & \text{if } i \neq S^i, \\ \\ \overline{x_i^{n-1}} & \text{if } i = S^i. \\\end{array}\right.
277 \end{equation}
278 Finally, let $\mathcal{M}$ be a finite subset of $\mathds{N}^*$. Some $x^n$ are selected by a sequence $m^n$ as the pseudorandom bit sequence of our generator, $(m^n)_{n \in \mathds{N}} \in \mathcal{M}^\mathds{N}$ . So, the generator returns the following values: the components of $x^{m^0}$, followed by the components of $x^{m^0+m^1}$, followed by the components of $x^{m^0+m^1+m^2}$, \emph{etc.}
279 In other words, the generator returns the following bits:\newline
280 $$x_1^{m_0}x_2^{m_0}x_3^{m_0}\hdots x_\mathsf{N}^{m_0}x_1^{m_0+m_1}x_2^{m_0+m_1}\hdots x_\mathsf{N}^{m_0+m_1} x_1^{m_0+m_1+m_2}x_2^{m_0+m_1+m_2}\hdots$$
281 %and its $k^{th}$ bit is equal to $$\displaystyle{x_{k+1 \text{ (mod }\mathsf{N}\text{)}}^{\sum_{i=0}^{\lfloor k/\mathsf{N} \rfloor}m_i}}.$$
282
283 \noindent or the following integers:$$x^{m_0}x^{m_0+m_1}x^{m_0+m_1+m_2}\hdots$$
284 \subsection{ The range of $m^i$: $\mathcal{M}$}
285 In probability and statistics, a random process is a repeating process whose outcomes follow no describable deterministic pattern, but follow a probability distribution, the occurrence of each outcomehe is possible. A simple example of the discrete uniform distribution is throwing a fair die. The possible values of $x$ are 1, 2, 3, 4, 5, 6; and each time the die is thrown, the probability of a given score is $1/6$. It means that whatever number the the previous die is, the next given score still has a probability of  $1/6$.
286
287 We shall carefully choose the range of $m^i$: $\mathcal{M}$. In some cases, some values in $2^N$ can not be obtained and the next returns of our generator will not be uniform because of $\bar{\bar{x}}=x$, as it is illustrated in the following example. Let us suppose that $x_i = (0, 0, 0, 0)$. Then the following  Table \ref{The probability}  shows the probability of $x_{i+1}$ with different sets $\mathcal{M}$. As it can be observed, the sets $\mathcal{M}$ with only one element can not obtain every one of $2^4$ values. So it is recommended to "added" two adjacent sets in Table \ref{The probability} together as $\mathcal{M}=\{$k, k+1$\}$. And easy to notice, the set like $\{1,2,3,4\}$ make the outputs of our generator would not be uniform distribution.
288
289 \begin{table}
290 \renewcommand{\arraystretch}{1.3}
291 \caption{The probability of $x_{i+1}$ with different sets $\mathcal{M}$}
292 \label{The probability}
293 \centering
294 % \begin{tiny}
295 \begin{tabular}{cc@{}c@{}c@{}c@{}c@{}c@{}c@{}c@{}c@{}c@{}c@{}c@{}c}\toprule
296 $\mathcal{M}$~&~\{1\}~&~\{2\}~&~\{3\}~&~\{4\}~&~\{5\}~&~\{6\}~&~\{7\}~&~\{8\}~&~\{9\}~&~\{10\}~&~\{11\}~&~\{12\}~&~\{13\} \\\hline
297 0       &       &$\surd$&       &$\surd$&       &$\surd$&       &$\surd$&       &$\surd$&       &$\surd$&       \\
298 1       &$\surd$&       &$\surd$&       &$\surd$&       &$\surd$&       &$\surd$&       &$\surd$&       &$\surd$\\
299 2       &$\surd$&       &$\surd$&       &$\surd$&       &$\surd$&       &$\surd$&       &$\surd$&       &$\surd$\\
300 3       &       &$\surd$&       &$\surd$&       &$\surd$&       &$\surd$&       &$\surd$&       &$\surd$&       \\
301 4       &$\surd$&       &$\surd$&       &$\surd$&       &$\surd$&       &$\surd$&       &$\surd$&       &$\surd$\\
302 5       &       &$\surd$&       &$\surd$&       &$\surd$&       &$\surd$&       &$\surd$&       &$\surd$&       \\
303 6       &       &$\surd$&       &$\surd$&       &$\surd$&       &$\surd$&       &$\surd$&       &$\surd$&       \\
304 7       &       &       &$\surd$&       &$\surd$&       &$\surd$&       &$\surd$&       &$\surd$&       &$\surd$\\
305 8       &$\surd$&       &$\surd$&       &$\surd$&       &$\surd$&       &$\surd$&       &$\surd$&       &$\surd$\\
306 9       &       &$\surd$&       &$\surd$&       &$\surd$&       &$\surd$&       &$\surd$&       &$\surd$&       \\
307 10      &       &$\surd$&       &$\surd$&       &$\surd$&       &$\surd$&       &$\surd$&       &$\surd$&       \\
308 11      &       &       &$\surd$&       &$\surd$&       &$\surd$&       &$\surd$&       &$\surd$&       &$\surd$\\
309 12      &       &$\surd$&       &$\surd$&       &$\surd$&       &$\surd$&       &$\surd$&       &$\surd$&       \\
310 13      &       &       &$\surd$&       &$\surd$&       &$\surd$&       &$\surd$&       &$\surd$&       &$\surd$\\
311 14      &       &       &$\surd$&       &$\surd$&       &$\surd$&       &$\surd$&       &$\surd$&       &$\surd$\\
312 15      &       &       &       &$\surd$&       &$\surd$&       &$\surd$&       &$\surd$&       &$\surd$&       \\
313 \bottomrule
314 \end{tabular}
315 % \end{tiny}
316 \end{table}
317          
318
319 In order to evaluate our proposed $\mathcal{M}=\{$k, k+1$\}$ and compare its statistical properties with various other $\mathcal{M}$, the density histogram and intensity map of adjacent output have been computed. The length of $x$ is $N = 4$ bits, and the initial conditions and control
320 parameters are the same. A large number of
321 sampled values are simulated ($10^6$ samples). 
322 %As shown in Figure~\ref{Histogram and intensity map}, it means that the number of adjacent output exists within the sequence. 
323 Figure~\ref{1213} shows the intensity map for $\mathcal{M}=\{12,13\}$.
324 In order to appear random, the histogram should be uniformly distributed in all areas. 
325 It can be observed that a uniform histogram and a flat color intensity map are obtained when using $\mathcal{M}=\{$k, k+1$\}$ ($k\geqslant 3\mathsf{N}$ is recommended). 
326 other illustrations of this fact are given by Figure~\ref{45}Figure~\ref{1234}Figure~\ref{1}Figure~\ref{2}Figure~\ref{3}Figure~\ref{4}. 
327 % whereas their uniformities are further justified by the tests presented in Chapter \ref{StatisticalTestsforRandomness}.
328
329 \begin{figure}
330 \centering
331 \subfigure[$\mathcal{M}=\{12,13\}$]{\includegraphics[scale=0.34]{images/1213.eps}
332 \label{1213}} \hspace{0.4cm}
333 \subfigure[$\mathcal{M}=\{4,5\}$]{\includegraphics[scale=0.34]{images/45.eps}
334 \label{45}} \hspace{0.4cm}
335 \subfigure[$\mathcal{M}=\{1,2,3,4\}$]{\includegraphics[scale=0.34]{images/1234.eps}
336 \label{1234}} \hspace{0.4cm}
337 \subfigure[$\mathcal{M}=\{1\}$]{\includegraphics[scale=0.34]{images/1.eps}
338 \label{1}} \hspace{0.4cm}
339 \subfigure[$\mathcal{M}=\{2\}$]{\includegraphics[scale=0.34]{images/2.eps}
340 \label{2}} \hspace{0.4cm}
341 \subfigure[$\mathcal{M}=\{3\}$]{\includegraphics[scale=0.34]{images/3.eps}
342 \label{3}} \hspace{0.4cm}
343 \subfigure[$\mathcal{M}=\{4\}$]{\includegraphics[scale=0.34]{images/4.eps}
344 \label{4}} \hspace{0.4cm}
345 \caption{Histogram and intensity maps}
346 \label{Histogram}
347 \end{figure}
348
349
350 \subsection{Old CI PRNGs Algorithm}
351 The basic design procedure of the novel generator is summed up in Algorithm~\ref{Chaotic iteration}.
352 The internal state is $x$, the output array is $r$. $a$ and $b$ are those computed by PRNG1 and PRNG2. Lastly, $k$ and $\mathsf{N}$ are constants and \linebreak $\mathcal{M}=\{$k, k+1$\}$ ($k\geqslant 3\mathsf{N}$ is recommended).
353 % \begin{table}
354 % \centering
355 % \begin{tabular}{|l|}
356 % \hline
357 % ~\textbf{Input}: the internal state $x$ (an array of $\mathsf{N}$ 1-bit words)\\
358 % \hline
359 % ~\textbf{Output}: an array $r$ of $\mathsf{N}$ 1-bit words\\
360 % \hline
361 % ~$a\leftarrow{PRNG1(~)}$;\\
362 % ~$m\leftarrow{a~mod~2+k}$\;\\
363 % ~\textbf{for} $i=0,\dots,m$ \textbf{do}\\
364 % ~~~~~~ $b\leftarrow{PRNG2(~)}$;\\
365 % ~~~~~~ $S\leftarrow{b~mod~\mathsf{N}}$;\\
366 % ~~~~~~ $x_S\leftarrow{ \overline{x_S}}$;\\
367 % ~~~~~~ $r\leftarrow{x}$;\\
368 % ~\textbf{end for}\\
369 % ~\textbf{return} $r$;\\
370 % \hline
371 % ~\textbf{An arbitrary round of CI}~\\
372 % \hline
373 % \end{tabular}
374 % \caption{An arbitrary round of the proposed generator}
375 % \label{Chaotic iteration}
376 % \end{table}
377
378 \begin{algorithm}
379 \textbf{Input:} the internal state $x$ (an array of $\mathsf{N}$ 1-bit words)\\
380 \textbf{Output:} an array $r$ of $\mathsf{N}$ 1-bit words
381 \begin{algorithmic}[1]
382
383 \STATE$a\leftarrow{PRNG1()}$;
384 \STATE$m\leftarrow{a~mod~2+c}$;
385 \WHILE{$i=0,\dots,m$}
386 \STATE$b\leftarrow{PRNG2()}$;
387 \STATE$S\leftarrow{b~mod~\mathsf{N}}$;
388 \STATE$x_S\leftarrow{ \overline{x_S}}$;
389 \ENDWHILE
390 \STATE$r\leftarrow{x}$;
391 \STATE return $r$;
392 \medskip
393 \caption{An arbitrary round of the old CI generator}
394 \label{Chaotic iteration}
395 \end{algorithmic}
396 \end{algorithm}
397
398 % \begin{table}
399 % \centering
400 % \begin{tabular}{|l|}
401 % \hline
402 % ~\textbf{Input}: the internal state $x$ (an array of $\mathsf{N}$ 1-bit words)\\
403 % \hline
404 % ~\textbf{Output}: an array $r$ of $\mathsf{N}$ 1-bit words\\
405 % \hline
406 % ~$a\leftarrow{ISAAC(~)}$;\\
407 % ~$m\leftarrow{a~mod~2+c}$\;\\
408 % ~\textbf{for} $i=0,\dots,m$ \textbf{do}\\
409 % ~~~~~~ $b\leftarrow{XORshift(~)}$;\\
410 % ~~~~~~ $S\leftarrow{b~mod~\mathsf{N}}$;\\
411 % ~~~~~~ $x_S\leftarrow{ \overline{x_S}}$;\\
412 % ~~~~~~ $r\leftarrow{x}$;\\
413 % ~\textbf{end for}\\
414 % ~\textbf{return} $r$;\\
415 % \hline
416 % ~\textbf{An arbitrary round of CI(ISAAC, XORshift)}~\\
417 % \hline
418 % \end{tabular}
419 % \caption{An arbitrary round of the proposed generator}
420 % \label{Chaotic iteration}
421 % \end{table}
422
423 \subsection{Illustrative example}
424
425 In this example, $\mathsf{N} = 5$ and $\mathcal{M} = \{$4,5$\}$ are chosen for easy understanding.
426 The initial state of the system $x^0$ can be seeded by the decimal part of the current time. For example, the current time in seconds since the Epoch is 1237632934.484084, so $t = 484084$. $x^0 = t \text{ (mod 32)}$ in binary digits, then $x^0 = (1, 0, 1, 0, 0)$. $m$ and $S$ can now be computed from PRNG1 and PRNG2:
427 \begin{itemize}
428 \item $m$ = 4, 5, 4, 4, 4, 4, 5, 5, 5, 5, 4, 5, 4,...
429 \item $S$ = 2, 4, 2, 2, 5, 1, 1, 5, 5, 3, 2, 3, 3,...
430 \end{itemize}
431 Chaotic iterations are done with initial state $x^0$, vectorial logical negation $f_0$, and strategy $S$. The result is presented in Table \ref{table application example}. Let us recall that sequence $m$ gives the states $x^n$ to return: $x^4, x^{4+5}, x^{4+5+4}, \hdots$\newline
432 %\begin{tiny}
433 \begin{table}
434 %\renewcommand{\arraystretch}{1.3}
435 \centering
436 \begin{tabular}{c|c@{}c@{}c@{}c@{}c|c@{}c@{}c@{}c@{}c@{}c|c@{}c@{}c@{}c@{}c@{}c}
437 \hline\hline
438 $m:$ & & & 4 & & & & & 5 & & & & & & 4 & & & \\ \hline
439 $S$ & 2 & 4 & 2 & 2 & & 5 & 1 & 1 & 5 & 5 & & 3 & 2 & 3 & 3 & & \\ \hline
440 $x^{0}$ & & & & & $x^{4}$ & & & & & & $x^{9}$ & & & & & $x^{13}$ & \\
441 %1ere ligne
442 1 & & & & &
443 1 & & $\xrightarrow{1} 0$ & $\xrightarrow{1} 1$ & & &
444 1 & & & & &
445 1 & \\
446 %2eme ligne
447 0 & $\xrightarrow{2} 1$ & & $\xrightarrow{2} 0$ & $\xrightarrow{2} 1$ &
448 1 & & & & & &
449 1 & & $\xrightarrow{2} 0$ & & & 0 &\\
450 %3eme ligne
451 1 & & & & &
452 1 & & & & & &
453 1 & $\xrightarrow{3} 0$ & & $\xrightarrow{3} 1$ & $\xrightarrow{3} 0$ &
454 0 &\\
455 % 4eme ligne
456 0 & & $\xrightarrow{4} 1$ & & &
457 1 & & & & & &
458 1 & & & & &
459 1 &\\
460 %5eme ligne
461 0 & & & & &
462 0 & $\xrightarrow{5} 1$ & & & $\xrightarrow{5} 0$ & $\xrightarrow{5} 1$ &
463 1 & & & & &
464 1 &\\
465 \hline\hline
466 \end{tabular}\\
467 \vspace{0.5cm}
468 Binary Output: $x_1^{0}x_2^{0}x_3^{0}x_4^{0}x_5^{0}x_1^{4}x_2^{4}x_3^{4}x_4^{4}x_5^{4}x_1^{9}x_2^{9}x_3^{9}x_4^{9}x_5^{9}x_1^{13}x_2^{13}... = 10100111101111110...$
469
470 Integer Output:
471 $x^{0},x^{0},x^{4},x^{6},x^{8}... = 20,30,31,19...$
472 \caption{Application example}
473 \label{table application example}
474 \end{table}
475 %\end{tiny}
476 So, in this example, the generated binary digits are: 10100111101111110011... Or the integers are: 20, 30, 31, 19...
477
478 \subsection{On the periodicity of chaotic orbit}
479 \label{Conclusions and Future Work}
480 \label{Experiments and statistical tests}
481
482 Since chaotic iterations are constrained in a discrete space with $2^{N}$ elements, it is obvious that every chaotic orbit will eventually be periodic, i.e., finally goes to a cycle with limited length not greater than $2^{N}$.
483
484 The schematic view of a typical orbit of a digital chaotic system is shown in Figure~\ref{A pseudo orbit of a digital chaotic system}. Generally speaking, each digital chaotic orbit includes two connected parts: $x^{0} , x^{1} , \dots, x^{l-1}$ and $ x^{l} , x^{l +1} , \dots , x^{l +n}$ , which are respectively called transient (branch) and cycle. Accordingly, $l$ and $n + 1$ are respectively called transient length and cycle period, and $l + n$ is called orbit length. Thus,
485
486 \begin{figure}
487 \centering
488 \includegraphics[scale=0.20]{images/pseudo_orbit.eps}
489 \caption{A pseudo orbit of a digital chaotic system}
490 \label{A pseudo orbit of a digital chaotic system}
491 \end{figure}
492
493
494 \begin{definition}%\cite{bahi102008}
495 A sequence $x = (x^{ 1} , ..., x^{n} )$ is said to be cyclic if a subset of successive terms is repeated from a given rank, until the end of $x$.
496 \end{definition}
497
498 This generator based on discrete chaotic iterations generated by two pseudorandom sequences ($m$ and $w$) has a long cycle length. If the cycle period of $m$ and $w$ are respectivelly $n_{m}$ and $n_{w}$, then in an ideal situation, the cycle period of the novel sequence is $n_{m} \times n_{w}\times 2$ (because $\bar{\bar{x}}=x$). Table \ref{The ideal cycle period} gives the ideal cycle period of various generators.
499
500 \begin{itemize}
501 \item $m$ ($n_{m}=2$): 12121212121212121212121212...
502
503 \item $w$ ($n_{w}=4$): 1 23 4 12 3 41 2 34 1 23 4 12 3 41 2 34 1 23 4...
504
505 \item $x$ ($n_{x}=2 \times 4 \times 2=16$): 0000(0) 1000(8) 1110(14) 1111(15) 0011(3) 0001(1) 1000(8) 1100(12) 1111(15) 0111(7) 0001(1) 0000(0) 1100(12) 1110(14) 0111(7) 0011(3) 0000(0) 1000(8) 1110(14) 1111(15) 0011(3) 0001(1) 1000(8) 1100(12) 1111(15) 0111(7) 0001(1) 0000(0) 1100(12) 1110(14) 0111(7) 0011(3)...
506
507 \end{itemize}
508
509
510 \begin{table}
511 \renewcommand{\arraystretch}{1.3}
512 \caption{Ideal cycle period}
513 \label{The ideal cycle period}
514 \centering
515 % \begin{tiny}
516 \begin{tabular}{|c|c|c|}\toprule\hline
517 \multicolumn{2}{|c|}{\textbf{PRNG}}&\textbf{Ideal cycle period}\\\hline
518 \multicolumn{2}{|c|}{\textbf{Logistic map}}& $\infty$\\\hline
519 \multicolumn{2}{|c|}{\textbf{XORshift}}&$2^{32}-1$ \\\hline
520 \multicolumn{2}{|c|}{\textbf{ISAAC}}& $2^{8295}$\\\hline
521 \multirow{4}*{\textbf{Old CI algorithms}}&\textbf{Logistic map 1+Logistic map 2}&$\infty$\\\cline{2-3}
522 &\textbf{XORshift+XORshift}&$2^{65}$\\\cline{2-3}
523 &\textbf{XORshift+ISAAC}&$2^{8328}$\\\cline{2-3}
524 &\textbf{ISAAC+ISAAC}&$2^{16591}$\\\hline
525 \bottomrule
526 \end{tabular}
527 % \end{tiny}
528 \end{table}
529
530
531 \section{New CI algorithms and examples}
532 \subsection{Presentation}
533 The CI generator (generator based on chaotic iterations) is designed by the following process. First of all, some chaotic iterations have to be done to generate a sequence $\left(x^n\right)_{n\in\mathds{N}} \in \left(\mathds{B}^\mathsf{N}\right)^\mathds{N}$ ($\mathsf{N} \in \mathds{N}^*, \mathsf{N} \geqslant 2$, $N$ is not necessarily equal to 32) of boolean vectors, which are the successive states of the iterated system. Some of these vectors will be randomly extracted and our pseudo-random bit flow will be constituted by their components. Such chaotic iterations are realized as follows. Initial state $x^0 \in \mathds{B}^\mathsf{N}$ is a boolean vector taken as a seed (see Section~\ref{algo seed}) and chaotic strategy $\left(S^n\right)_{n\in\mathds{N}}\in \llbracket 1, \mathsf{N} \rrbracket^\mathds{N}$ is
534 an irregular decimation of a random number sequence (Section~\ref{Chaotic strategy}). The iterate function $f$ is
535 the vectorial boolean negation:
536 $$f_0:(x_1,...,x_\mathsf{N}) \in \mathds{B}^\mathsf{N} \longmapsto (\overline{x_1},...,\overline{x_\mathsf{N}}) \in \mathds{B}^\mathsf{N}.$$
537 At each iteration, only the $S^i$-th component of state $x^n$ is updated, as follows: $x_i^n = x_i^{n-1}$ if $i \neq S^i$, else $x_i^n = \overline{x_i^{n-1}}$.
538 Finally, some $x^n$ are selected
539 by a sequence $m^n$ as the pseudo-random bit sequence of our generator.
540 $(m^n)_{n \in \mathds{N}} \in \mathcal{M}^\mathds{N}$ is computed from a PRNG, such as XORshift sequence $(y^n)_{n \in \mathds{N}} \in \llbracket 0, 2^{32}-1 \rrbracket$ (see Section~\ref{algo m}). So, the
541 generator returns the following values:\newline
542 \begin{small}
543 Bits:$$x_1^{m_0}x_2^{m_0}x_3^{m_0}\hdots x_\mathsf{N}^{m_0}x_1^{m_0+m_1}x_2^{m_0+m_1}\hdots x_\mathsf{N}^{m_0+m_1} x_1^{m_0+m_1+m_2}\hdots$$
544 or States:$$x^{m_0}x^{m_0+m_1}x^{m_0+m_1+m_2}\hdots$$
545 \end{small}
546
547
548 \subsection{The seed}
549 \label{algo seed}
550 The unpredictability of random sequences is established using
551 a random seed that is obtained by a physical source like timings of keystrokes.
552 Without the seed, the attacker must not be able to make any predictions about
553 the output bits, even when all details of the generator are known~\cite{Turan2008}.
554
555 The initial state of the system $x^0$ and the first term $y^0$ of the input PRNG are seeded either by
556 the current time in seconds since the Epoch, or by a number that the user inputs.
557 Different ways are possible. For example, let us denote by $t$ the decimal part of the current
558 time. So $x^0$ can be $t \text{ (mod $2^N$)}$ written in binary digits and $y^0 = t$.
559
560 \subsection{Sequence $m$ of returned states}
561 \label{algo m}
562 The output of the sequence $(y^n)$ is uniform in $\llbracket 0, 2^{32}-1 \rrbracket$. However, we do not want the output of $(m^n)$ to be uniform in $\llbracket 0, N \rrbracket$, because in this case, the returns of our generator will not be uniform in $\llbracket 0, 2^{N}-1 \rrbracket$, as it is illustrated in the following example. Let us suppose that $x^0=(0,0,0)$. Then $m^0 \in \llbracket 0, 3 \rrbracket$.
563 \begin{itemize}
564 \item If $m^0=0$, then no bit will change between the first and the second output of our new CI PRNG. Thus $x^1 = (0,0,0)$.
565 \item If $m^0=1$, then exactly one bit will change, which leads to three possible values for $x^1$, namely $(1,0,0)$, $(0,1,0)$, and $(0,0,1)$.
566 \item \emph{etc.}
567 \end{itemize}
568 As each value in $\llbracket 0, 2^3-1 \rrbracket$ must be returned with the same probability, then the values $(0,0,0)$, $(1,0,0)$, $(0,1,0)$, and $(0,0,1)$ must occur for $x^1$ with the same probability. Finally we see that, in this example, $m^0=1$ must be three times probable as $m^0=0$.
569 This leads to the following general definition for the probability of $m=i$:
570 \begin{equation}
571 P(m^n=i)=\frac{C^i_N}{2^N}
572 \end{equation}
573
574 Then, here is an example for the $(m^n)$ sequence with a selector function $g_1$
575 \begin{equation}
576 \label{Formula}
577 m^n = g_1(y^n)=
578 \left\{
579 \begin{array}{l}
580 0 \text{ if }0 \leqslant\frac{y^n}{2^{32}}<\frac{C^0_N}{2^N},\\
581 1 \text{ if }\frac{C^0_N}{2^N} \leqslant\frac{y^n}{2^{32}}<\sum_{i=0}^1\frac{C^i_N}{2^N},\\
582 2 \text{ if }\sum_{i=0}^1\frac{C^i_N}{2^N} \leqslant\frac{y^n}{2^{32}}<\sum_{i=0}^2\frac{C^i_N}{2^N},\\
583 \vdots~~~~~ ~~\vdots~~~ ~~~~\\
584 N \text{ if }\sum_{i=0}^{N-1}\frac{C^i_N}{2^N} \leqslant\frac{y^n}{2^{32}}<1.\\
585 \end{array}
586 \right.
587 \end{equation}
588
589 Let us notice, to conclude this subsection, that our new CI PRNG can use any reasonable function as selector. In this paper, $g_1()$ and $g_2()$ are adopted for demonstration purposes, where:
590 \begin{equation}
591 m^n = g_2(y^n)=
592 \left\{
593 \begin{array}{l}
594 N \text{ if }0 \leqslant\frac{y^n}{2^{32}}<\frac{C^0_N}{2^N},\\
595 N-1 \text{ if }\frac{C^0_N}{2^N} \leqslant\frac{y^n}{2^{32}}<\sum_{i=0}^1\frac{C^i_N}{2^N},\\
596 N-2 \text{ if }\sum_{i=0}^1\frac{C^i_N}{2^N} \leqslant\frac{y^n}{2^{32}}<\sum_{i=0}^2\frac{C^i_N}{2^N},\\
597 \vdots~~~~~ ~~\vdots~~~ ~~~~\\
598 0 \text{ if }\sum_{i=0}^{N-1}\frac{C^i_N}{2^N} \leqslant\frac{y^n}{2^{32}}<1.\\
599 \end{array}
600 \right.
601 \end{equation}
602
603 In this thesis, $g_1()$ is the selector function unless noted otherwise. And we will show later that both of $g_1()$ and $g_2()$ can pass all of the performed tests. 
604
605 %
606 %This definition has been chosen for the following reason:
607 %
608 %The probability $P$ of occurrences of any integer taken in $ \llbracket 0;\mathsf{2^N}-1 \rrbracket$ is $\frac{1}{2^N}$. A string of $N$ binary digits is used to represent this integer; changing $m$ bits of this string will lead to $C_N^m$ different integers.
609 %
610 %
611 %$m^n$ indicates the changing bits between two adjacent output values.
612 %
613 %
614 %If the CI generator generate numbers, each approximately uniformly selected from the set
615 %$\llbracket 0;\mathsf{2^N}-1 \rrbracket$, the probability
616 %distribution $P_m$ of $m$ from the XORshift is equal to $\frac{C_N^m}{2^N}$.
617 %
618
619
620 %$y^0 \in \llbracket 0;2^{32}-1 \rrbracket$ be an integer deduced as a seed too (see Section \ref{algo seed}).
621 % As shown in Figure~\ref{}, It means that the velue of y_{n+1} can be selected as any values.
622 % Color histogram. In order to appear random, the color histograms of the encrypted image should be uniform
623 % distributed in all three color components (RGB). Figs. 6 and 7 show the histograms of RGB colors for the
624 % original (Fig. 5(a)) and the encrypted images (Fig. 5(b)), respectively. It can be observed that a flat color his-
625 % togram is resulted from the encrypted image using our scheme. Its uniformity is further justified by the chi-
626 % square test [14]
627 In order to evaluate our proposed method and compare its statistical properties with various other methods, the density histogram and intensity map of adjacent output have been computed. The length of $x$ is $N = 4$ bits, and the initial conditions and control
628 parameters are the same. A large number of
629 sampled values are simulated ($10^6$ samples). 
630 %As shown in Figure~\ref{Histogram and intensity map}, it means that the number of adjacent output exists within the sequence. 
631 Figure~\ref{Histogram1} and Figure~\ref{Histogram2} shows the intensity map for $m^n=g_1(y^n)$ and $m^n=g_2(y^n)$.
632 In order to appear random, the histogram should be uniformly distributed in all areas. 
633 It can be observed that uniform histograms and flat color intensity maps are obtained when using our schemes. 
634 Another illustration of this fact is given by Figure~\ref{Histogram3}, whereas its uniformity is further justified by the tests presented in Section \ref{Results of NISTfor new CI}.
635 % and for $m^n=y^n~mod~N$ () respectively.  
636
637
638 \begin{figure}[!t]
639 \centering
640 \subfigure [The histogram of adjacent output distribution $m^n = g_1(y^n)$]{\includegraphics[scale=0.4]{images/f(y).eps}
641 \label{Histogram1}} \hspace{0.4cm}
642 \subfigure [The histogram of adjacent output distribution $m^n = g_2(y^n)$]{\includegraphics[scale=0.3]{images/f2(y).eps}
643 \label{Histogram2}} \hspace{0.4cm}
644 \subfigure [The histogram of adjacent output distribution $m^n = y^n ~ mod ~ 4$]{\includegraphics[scale=0.4]{images/y.eps}%
645 \label{Histogram3}} \hspace{0.4cm}
646 \caption{Histogram and intensity maps}
647 \label{Histogram and intensity map1}
648 \end{figure}
649
650
651 \subsection{Chaotic strategy}
652 \label{Chaotic strategy}
653 The chaotic strategy $(S^k) \in \llbracket 1, N \rrbracket^\mathds{N}$ is generated from a second XORshift sequence $(b^k) \in \llbracket 1, N \rrbracket^\mathds{N}$. The only difference between the sequences $S$ and $b$ is that some terms of $b$ are discarded, in such a way that $\forall k \in \mathds{N}, (S^{M^k}, S^{M^k+1}, \hdots, S^{M^{k+1}-1})$ does not contain any given integer twice, where $M^k = \sum_{i=0}^k m^i$. Therefore, no bit will change more than once between two successive outputs of our PRNG, increasing the speed of the former generator by doing so. $S$ is said to be ``an irregular decimation'' of $b$. This decimation can be obtained by the following process.
654
655 Let $(d^1,d^2,\dots,d^N)\in \{0,1\}^N$ be a mark sequence, such that whenever $\sum_{i=1}^N d^i = m^k$,
656 then $\forall i, d_i=0$ ($\forall k$, the sequence is reset when $d$ contains $m^k$ times the number 1). This mark sequence will control the XORshift sequence $b$ as follows:
657 \begin{itemize}
658 \item if $d^{b^j} \neq 1$, then $S^k=b^j$, $d^{b^j} = 1$, and $k = k+1$,
659 \item if $d^{b^j}=1$, then $b^j$ is discarded.
660 \end{itemize}
661 For example, if $b = 142\underline{2}334 1421\underline{1}\underline{2}\underline{2}34...$ and $m = 4341...$, then $S=1423~341~4123~4...$ However, if we do not use the mark sequence, then one position may change more than once and the balance property will not be checked, due to the fact that $\bar{\bar{x}}=x$. As an example, for $b$ and $m$ as in the previous example, $S=1422~334~1421~1...$ and $S=14~4~42~1...$ lead to the same output (because switching the same bit twice leads to the same state).
662
663  
664 To check the balance property, a set of 500
665 sequences are generated with and without decimation, each
666 sequence containing $10^6$ bits. Figure~\ref{nmark} shows the
667 percentages of differences between zeros and ones, and presents a better balance property for the sequences with decimation. This claim will be verified in the tests section (Section \ref{Results of NISTfor new CI}). 
668
669
670 Another example is given in Table~\ref{table application example}, in which $r$ means ``reset'' and the integers which are underlined in sequence $b$ are discarded.
671 %A simple example illustrates the behavior of this structure.\\
672 %$m$ : 0,~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~4,~~~~~~~~~~~~~~~~~~~~~~~~~~~~~2,\\
673 %$d$ : r(1,0,0,0),(1,0,0,1),(1,1,0,1),(1,1,1,1),r(0,0,1,0),(0,0,1,1),r \\
674 %$b$ : ~~~ 1,~~~~~~~~~~~ 4,~~~~~~~~~~~~ 2,~~~~ \underline{2},~~~~ 3,~~~~~~~~~~~~~~3,~~~~~~~~~~~~~ 4,~~~~~~~~~~~~~~~~\\
675 %$S$ : ~~~1,~~~~~~~~~~~ 4,~~~~~~~~~~~~ 2,~~~~~~~~~~~~ 3,~~~~~~~~~~~~~~3,~~~~~~~~~~~~~ 4,~~~~~~~~~~~~~~~~
676 %
677 %Here r means reset, the underlined numbers in the sequence $b_j$ are discarded. In brief, the
678 %sequence $S$ is an irregular decimation of $b$ by the mark sequence.
679
680
681
682
683
684
685 \begin{figure}
686 \centering
687 \includegraphics[width=3.85in]{images/nmark.eps}
688 \DeclareGraphicsExtensions.
689 \caption{Balance property}
690 \label{nmark}
691 \end{figure}
692
693 \subsection{New CI(XORshift, XORshift) Algorithm}
694
695 The basic design procedure of the novel generator is summed up in Algorithm~\ref{Chaotic iteration1}.
696 The internal state is $x$, the output state is $r$. $a$ and $b$ are those computed by the two input
697 PRNGs. The value $g_1(a)$ is an integer, defined as in Equation~\ref{Formula}. Lastly, $\mathsf{N}$ is a constant defined by the user.
698 \begin{algorithm}
699 \textbf{Input:} the internal state $x$ ($\mathsf{N}$ bits)\\
700 \textbf{Output:} a state $r$ of $\mathsf{N}$ bits
701 \begin{algorithmic}[1]
702 \FOR{$i=0,\dots,N$}
703 {
704 \STATE$d_i\leftarrow{0}$\;
705 }
706 \ENDFOR
707 \STATE$a\leftarrow{PRNG1()}$\;
708 \STATE$m\leftarrow{f(a)}$\;
709 \STATE$k\leftarrow{m}$\;
710 \WHILE{$i=0,\dots,k$}
711
712 \STATE$b\leftarrow{PRNG2()~mod~\mathsf{N}}$\;
713 \STATE$S\leftarrow{b}$\;
714     \IF{$d_S=0$}
715     {
716 \STATE      $x_S\leftarrow{ \overline{x_S}}$\;
717 \STATE      $d_S\leftarrow{1}$\;
718     
719     }
720     \ELSIF{$d_S=1$}
721     {
722 \STATE      $k\leftarrow{ k+1}$\;
723     }\ENDIF
724 \ENDWHILE
725 $r\leftarrow{x}$\;
726 return $r$\;
727 \medskip
728 \caption{An arbitrary round of the new CI generator}
729 \label{Chaotic iteration1}
730 \end{algorithmic}
731 \end{algorithm}
732
733
734 % \begin{algorithm}
735 % \SetAlgoLined
736 % \KwIn{the internal state $x$ ($\mathsf{N}$ bits)}
737 % \KwOut{a state $r$ of $\mathsf{N}$ bits}
738 % \For{$i=0,\dots,N$}
739 % {
740 % $d_i\leftarrow{0}$\;
741 % }
742 % $a\leftarrow{XORshift1()}$\;
743 % $m\leftarrow{g_1(a)}$\;
744 % $k\leftarrow{m}$\;
745 % \For{$i=0,\dots,k$}
746 % {
747 % $b\leftarrow{XORshift2()~mod~\mathsf{N}}$\;
748 % $S\leftarrow{b}$\;
749 % \If{$d_S=0$}
750 % {
751 % $x_S\leftarrow{ \overline{x_S}}$\;
752 % $d_S\leftarrow{1}$\;
753 % }
754 % \ElseIf{$d_S=1$}
755 % {
756 % $k\leftarrow{ k+1}$\;
757 % }
758 % }
759 % $r\leftarrow{x}$\;
760 % return $r$\;
761 % \medskip
762 % \caption{An arbitrary round of the new CI(XORshift,XORshift) generator}
763 % \label{Chaotic iteration1}
764 % \end{algorithm}
765
766 As a comparison, the basic design procedure of the old generator is recalled in Algorithm~\ref{Chaotic iteration2} ($a$ and $b$ are computed by two input PRNGs, $\mathsf{N}$ and $c\geqslant 3\mathsf{N}$ are constants defined by the user). See Subsection~\ref{Old CI algorithms and examples} for further information.
767
768 % \begin{algorithm}
769 % \SetAlgoLined
770 % \KwIn{the internal state $x$ ($\mathsf{N}$ bits)}
771 % \KwOut{a state $r$ of $\mathsf{N}$ bits}
772 % $a\leftarrow{Logistic map1()}$\;
773 % \If{$a>0.5$}
774 % {
775 % $d\leftarrow 1$
776 % }
777 % \Else
778 % {
779 % $d\leftarrow 0$
780 % }
781
782 % $m\leftarrow{d+c}$\;
783 % \For{$i=0,\dots,m$}
784 % {
785 % $b\leftarrow{Logistic map2()}$\;
786 % $S\leftarrow{100000b~mod~\mathsf{N}}$\;
787 % $x_S\leftarrow{ \overline{x_S}}$\;
788 % }
789 % $r\leftarrow{x}$\;
790 % return $r$\;
791 % \medskip
792 % \caption{An arbitrary round of the old CI PRNG}
793 % \label{Chaotic iteration2}
794 % \end{algorithm}
795 \begin{algorithm}
796 \textbf{Input:} the internal state $x$ (an array of $\mathsf{N}$ 1-bit words)\\
797 \textbf{Output:} an array $r$ of $\mathsf{N}$ 1-bit words
798 \begin{algorithmic}[1]
799
800 \STATE$a\leftarrow{PRNG1()}$;
801 \STATE$m\leftarrow{a~mod~2+c}$;
802 \WHILE{$i=0,\dots,m$}
803 \STATE$b\leftarrow{PRNG2()}$;
804 \STATE$S\leftarrow{b~mod~\mathsf{N}}$;
805 \STATE$x_S\leftarrow{ \overline{x_S}}$;
806 \ENDWHILE
807 \STATE$r\leftarrow{x}$;
808 \STATE return $r$;
809 \medskip
810 \caption{An arbitrary round of the old CI generator}
811 \label{Chaotic iteration2}
812 \end{algorithmic}
813 \end{algorithm}
814
815
816 \subsection{Illustrative Example}
817
818 In this example, $\mathsf{N} = 4$ is chosen for easy understanding and the input PRNG is XORshift PRNG.
819 As stated before, the initial state of the system $x^0$ can be seeded by the decimal part $t$ of the current time.
820 For example, if the current time in seconds since the Epoch is 1237632934.484088,
821 so $t = 484088$, then $x^0 = t \text{ ($mod$ 16)}$ in binary digits, \emph{i.e.}, $x^0 = ( 0, 1, 0, 0)$.
822
823 To compute $m$ sequence, Equation~\ref{Formula} can be adapted to this example as follows:
824 \begin{equation}
825 \label{m1 fuction}
826 m^n=g_1(y^n)=
827 \left\{
828 \begin{array}{llccccc}
829 0 & \text{ if }&0 &\leqslant&\frac{y^n}{2^{32}}&<&\frac{1}{16},\\
830 1 & \text{ if }&\frac{1}{16} &\leqslant&\frac{y^n}{2^{32}}&<&\frac{5}{16} ,\\
831 2 & \text{ if }&\frac{5}{16} &\leqslant&\frac{y^n}{2^{32}}&<&\frac{11}{16},\\
832 3 & \text{ if }&\frac{11}{16} &\leqslant&\frac{y^n}{2^{32}}&<&\frac{15}{16},\\
833 4 & \text{ if }&\frac{15}{16} &\leqslant&\frac{y^n}{2^{32}}&<&1,\\
834 \end{array}
835 \right.
836 \end{equation}
837
838 \noindent where $y$ is generated by XORshift seeded with the current time. We can see that the probabilities of occurrences of $m=0$, $m=1$, $m=2$, $m=3$, $m=4$, are $\frac{1}{16}$, $\frac{4}{16}$, $\frac{6}{16}$, $\frac{4}{16}$, $\frac{1}{16}$, respectively. This $m$ determines what will be the next output $x$. For instance,
839 \begin{itemize}
840 \item If $m=0$, the following $x$ will be $( 0, 1, 0, 0)$.
841 \item If $m=1$, the following $x$ can be $( 1, 1, 0, 0)$, $( 0, 0, 0, 0)$, $( 0, 1, 1, 0)$, or $( 0, 1, 0, 1)$.
842 \item If $m=2$, the following $x$ can be $( 1, 0, 0, 0)$, $( 1, 1, 1, 0)$, $( 1, 1, 0, 1)$, $( 0, 0, 1, 0)$, $( 0, 0, 0, 1)$, or $( 0, 1, 1, 1)$.
843 \item If $m=3$, the following $x$ can be $( 0, 0, 1, 1)$, $( 1, 1, 1, 1)$, $( 1, 0, 0, 1)$, or $( 1, 0, 1, 0)$.
844 \item If $m=4$, the following $x$ will be $( 1, 0, 1, 1)$.
845 \end{itemize}
846
847 In this simulation, $m = 0, 4, 2, 2, 3, 4, 1, 1, 2, 3, 0, 1, 4,...$ Additionally, $b$ is computed with a XORshift generator too, but with another seed. We have found $b = 1, 4, 2, 2, 3, 3, 4, 1, 1, 4, 3, 2, 1,...$
848
849 Chaotic iterations are made with initial state $x^0$, vectorial logical negation $f_0$, and
850 strategy $S$. The result is presented in Table~\ref{table application example}. Let us recall that sequence $m$ gives the states $x^n$ to return, which are here $x^0, x^{0+4}, x^{0+4+2}, \hdots$ So, in this example, the output of the generator is: 10100111101111110011... or 4,4,11,8,1...
851
852
853
854
855 \begin{table*}[!t]
856 %\renewcommand{\arraystretch}{1.3}
857 \centering
858 \begin{tabular}{|c|c@{}c|c@{}c@{}c@{}c@{}c@{}c|c@{}c@{}c|c@{}c@{}c@{}c|}
859 \hline
860 $m$ &0 & &4 & & & & & &2& &&2&&  &  \\ \hline
861 $k$ &0 & &4 & & &$+1$ & & &2& &&2&$+1$&  &  \\ \hline
862 $b$  &  & &1 &4&2&\underline{2}       &3& &3&4&&1&\underline{1}      &4&\\ \hline
863 $d$  &r  & &r~$\left(\begin{array}{c}1\\0\\0\\0\end{array}\right)$ & $\left(\begin{array}{c}1\\0\\0\\1\end{array}\right)$ & $\left(\begin{array}{c}1\\1\\0\\1\end{array}\right)$ & & $\left(\begin{array}{c}1\\1\\1\\1\end{array}\right)$ && r~$\left(\begin{array}{c}0\\0\\1\\0\end{array}\right)$ &$\left(\begin{array}{c}0\\0\\1\\1\end{array}\right)$ &&r~$\left(\begin{array}{c}1\\0\\0\\0\end{array}\right)$ & &$\left(\begin{array}{c}1\\0\\0\\1\end{array}\right)$  &  \\ \hline
864 $S$  &  & &1 &4&2&        &3& &3&4&&1& &4 &  \\ \hline
865 $x^{0}$ &  &$x^{0}$ & & &  
866 &  & &$x^{4}$ & & &   
867 $x^{6}$& & &&$x^{8}$  \\
868 %1ere ligne
869 0 & &0 &$\xrightarrow{1} 1$ & &
870  & &   &1   & & &
871 1 &$\xrightarrow{1} 0$ & & & 0\\
872 %2eme ligne
873 1 &  &1 &   &   &
874 $\xrightarrow{2} 0$ & & &0 & & &
875 0 & &  &&0\\
876 %3eme ligne
877 0 & &0 & & &
878  & &$\xrightarrow{3} 1$ &1 &$\xrightarrow{3} 0$ & &
879 0 &   & & &0  \\
880 % 4eme ligne
881 0 & &0  & &$\xrightarrow{4} 1$ &
882  & & &1 & &$\xrightarrow{4} 0$ &
883 0 & & &$\xrightarrow{4} 1$&1 \\
884 \hline
885 \end{tabular}\\
886 \vspace{0.5cm}
887 Binary Output: $x_1^{0}x_2^{0}x_3^{0}x_4^{0}x_1^{4}x_2^{4}x_3^{4}x_4^{4}x_1^{6}x_2^{6}... = 0100101110000001...$\\
888 Integer Output:
889 $x^{0},x^{4},x^{6},x^{8}... = 4,11,8,1...$
890 \caption{Example of New CI(XORshift,XORshift) generation}
891 \label{table application example}
892 \end{table*}
893
894
895
896
897
898
899
900
901 % \section{Chaotic iterations as pseudo-random generator}
902 % \subsection{Presentation}
903
904 % The CI generator is designed by the following process \cite{wang2009,wbg10:ip}. 
905
906 % Chaotic iterations are done to generate a sequence $\left(x^n\right)_{n\in\mathds{N}} \in \left(\mathds{B}^\mathsf{N}\right)^\mathds{N}$ ($\mathsf{N} \in \mathds{N}^*, \mathsf{N} \geqslant 2$) of boolean vectors, which are the successive states of the iterated system. Some of these vectors are randomly extracted and the pseudo-random bit flow is constituted by their components. These chaotic iterations are realized as follows. 
907
908 % Initial state $x^0 \in \mathds{B}^\mathsf{N}$ is a boolean vector taken as a seed (see Section~\ref{algo seed}) and chaotic strategy $\left(S^n\right)_{n\in\mathds{N}}\in \llbracket 1, \mathsf{N} \rrbracket^\mathds{N}$ is defined with a XORshift sequence (Old CI generator \cite{wang2009}) or an irregular decimation of it (New CI generatot \cite{wbg10:ip}), as it is explained in Section~\ref{Chaotic strategy}). Lastly, the iterate function $f$ is the vectorial boolean negation.
909
910 % More precisely, at each iteration, only $S^i$-th component of state $x^n$ is updated as follows
911 % \begin{equation}
912 % x_i^n = \left\{\begin{array}{ll}x_i^{n-1} & \text{if } i \neq S^i, \\ \\ \overline{x_i^{n-1}} & \text{if } i = S^i. \\\end{array}\right.
913 % \end{equation}
914 % Then, let $\mathcal{M}$ be a finite subset of $\mathds{N}^*$. Some $x^n$ are selected by a sequence $m^n$ as the pseudo-random bit sequence of our generator. The sequence $(m^n)_{n \in \mathds{N}} \in \mathcal{M}^\mathds{N}$ is computed from XORshift (or from a decimation of it, in case of the new CI generator). So, the generator returns the following values:
915 % \begin{itemize}
916 % \item the components of $x^{m^0}$,
917 % \item following by the components of $x^{m^0+m^1}$,
918 % \item following by the components of $x^{m^0+m^1+m^2}$,
919 % \item \emph{etc.}
920 % \end{itemize}
921 % In other words, the generator returns the following bits:\newline
922 % \begin{small}
923 % $$x_1^{m_0}x_2^{m_0}x_3^{m_0}\hdots x_\mathsf{N}^{m_0}x_1^{m_0+m_1}x_2^{m_0+m_1}\hdots x_\mathsf{N}^{m_0+m_1} x_1^{m_0+m_1+m_2}x_2^{m_0+m_1+m_2}\hdots$$
924 % \end{small}
925
926
927
928 % \subsection{The seed}
929 % \label{algo seed}
930
931 % The initial state of the system $x^0$ and the first term $y^0$ of the XORshift are seeded either by the current time in seconds since the Epoch, or by a number that the user inputs, as it is usually the case for every PRNG.
932
933 % \subsection{Sequence $m$ of returned states}
934 % \label{algo m}
935
936 % The output of a sequence $(y^n)$ produced by a XORshift generator is uniform in $\llbracket 0, 2^{32}-1 \rrbracket$. However, we do not want the output of $(m^n)$ to be uniform in $\llbracket 0, N \rrbracket$, because in this case, the returns of our generator will not be uniform in $\llbracket 0, 2^{N}-1 \rrbracket$, as it is illustrated in the following example. Let us suppose that $x^0=(0,0,0)$. Then $m^0 \in \llbracket 0, 3 \rrbracket$.
937 % \begin{itemize}
938 % \item If $m^0=0$, then no bit will change between the first and the second output of our PRNG. Thus $x^1 = (0,0,0)$.
939 % \item If $m^0=1$, then exactly one bit will change, which leads to three possible values for $x^1$, namely $(1,0,0)$, $(0,1,0)$, and $(0,0,1)$.
940 % \item \emph{etc.}
941 % \end{itemize}
942 % As each value in $\llbracket 0, 2^3-1 \rrbracket$ must be returned with the same probability, then the values $(0,0,0)$, $(1,0,0)$, $(0,1,0)$ and $(0,0,1)$ must occur for $x^1$ with the same probability. Finally we see that, in this example, $m^0=1$ must be three times more probable than $m^0=0$.
943 % This leads to the following general definition for $m$:
944 % \begin{equation}
945 % \label{Formula}
946 % m^n = f(y^n)=
947 % \left\{
948 % \begin{array}{l}
949 % 0 \text{ if }0                                \leqslant\frac{y^n}{2^{32}}<\frac{C^0_N}{2^N},\\
950 % 1 \text{ if }\frac{C^0_N}{2^N}                \leqslant\frac{y^n}{2^{32}}<\sum_{i=0}^1\frac{C^i_N}{2^N},\\
951 % 2 \text{ if }\sum_{i=0}^1\frac{C^i_N}{2^N}    \leqslant\frac{y^n}{2^{32}}<\sum_{i=0}^2\frac{C^i_N}{2^N},\\
952 % \vdots~~~~~                                   ~~\vdots~~~                 ~~~~\\
953 % N \text{ if }\sum_{i=0}^{N-1}\frac{C^i_N}{2^N}        \leqslant\frac{y^n}{2^{32}}<1.\\
954 % \end{array}
955 % \right.
956 % \end{equation}
957 % %
958 % %This definition has been chosen for the following reason: 
959 % %
960 % %The probability $P$ of occurrences of any integer taken in $ \llbracket 0;\mathsf{2^N}-1 \rrbracket$ is $\frac{1}{2^N}$. A string of $N$ binary digits is used to represent this integer; changing $m$ bits of this string will lead to $C_N^m$ different integers.
961 % %
962 % %
963 % %$m^n$ indicates the changing bits between two adjacent output values.
964 % %
965 % %
966 % %If the CI generator generate numbers, each approximately uniformly selected from the set 
967 % %$\llbracket 0;\mathsf{2^N}-1 \rrbracket$, the probability 
968 % %distribution $P_m$ of $m$ from the XORshift is equal to $\frac{C_N^m}{2^N}$.
969 % %
970
971
972 % %$y^0 \in \llbracket 0;2^{32}-1 \rrbracket$ be an integer deduced as a seed too (see Section \ref{algo seed}).
973
974
975 % \subsection{Chaotic strategy}
976 % \label{Chaotic strategy}
977
978 % The chaotic strategy $(S^k) \in \llbracket 1, N \rrbracket^\mathds{N}$ is generated from a second XORshift sequence $(b^k) \in \llbracket 1, N \rrbracket^\mathds{N}$. In the Old CI generator, $S=b$. In the New CI generator, the sole difference between the sequences $S$ and $b$ is that some terms of $b$ are discarded, in such a way that: $\forall k \in \mathds{N}, (S^{M^k}, S^{M^k+1}, \hdots, S^{M^{k+1}-1})$ does not contain a same integer twice, where $M^k = \sum_{i=0}^k m^i$. Therefore, in New CI generator, no bit will change more than once between two successive outputs of our PRNG, increasing the speed of the former generator by doing so. $S$ is said to be ``an irregular decimation'' of $b$. This decimation can be obtained by the following process.
979
980 % Let $(d^1,d^2,\dots,d^N)\in \{0,1\}^N$ be a mark sequence, such that whenever $\sum_{i=1}^N d^i = m^k$, 
981 % then $\forall i, d_i=0$ ($\forall k$, the sequence is reset when $d$ contains $m^k$ times the number 1). This mark sequence will control the XORshift sequence $b$ as follows:
982 % \begin{itemize}
983 % \item if $d^{b^j} \neq 1$, then $S^k=b^j$, $d^{b^j} = 1$, and $k = k+1$,
984 % \item if $d^{b^j}=1$, then $b^j$ is discarded.
985 % \end{itemize}
986 % For example, if $b = 142\underline{2}334 142\underline{1}\underline{1}\underline{2}\underline{2}34...$ and $m = 4241...$, then $S=1423~34~1423~4...$ Another example is given in Table~\ref{table application example}, in which $r$ means ``reset'' and the integers which are underlined in sequence $b$ are discarded.
987
988
989
990 % %\subsection{Old CI pseudo-random sequence}
991 % %\label{The generation of pseudo-random sequence}
992
993 % %The design of the PRNG based on discrete chaotic iterations is proposed in this section, while its performance is evaluated in the next sections.
994 % %The old CI generator is designed by the following process.
995 % %Let $\mathsf{N} \in \mathds{N}^*, \mathsf{N} \geqslant 2$. Some chaotic iterations are done, which generate a sequence $\left(x^n\right)_{n\in\mathds{N}} \in \left(\mathds{B}^\mathsf{N}\right)^\mathds{N}$ of boolean vectors: the successive states of the iterated system. Some of these vectors are chaotically extracted and their components constitute our pseudo-random bit flow.
996 % %Chaotic iterations are realized as follows: initial state\linebreak $x^0 \in \mathds{B}^\mathsf{N}$ is a boolean vector taken as a seed and chaotic strategy $\left(S^n\right)_{n\in\mathds{N}}\in \llbracket 1, \mathsf{N} \rrbracket^\mathds{N}$ is constructed with XORshift. Lastly, iterate function $f$ is the vectorial boolean negation
997 % %$$f_0:(x_1,...,x_\mathsf{N}) \in \mathds{B}^\mathsf{N} \longmapsto (\overline{x_1},...,\overline{x_\mathsf{N}}) \in \mathds{B}^\mathsf{N}.$$
998
999
1000
1001
1002
1003
1004 % \section{CI(XORshift, XORshift) algorithms and examples}
1005
1006 % \subsection{Algorithms}
1007
1008 % The basic design procedure of the old generator is recalled in Algorithm~\ref{Chaotic iteration2} ($a$ and $b$ are computed by XORshift generators, $\mathsf{N}$ and $c\geqslant 3\mathsf{N}$ are constants defined by the user). 
1009 % Algorithm~\ref{Chaotic iteration1} summarizes the basic design procedure of the new generator. The internal state is $x$, the output state is $r$. $a$ and $b$ are those computed by the two XORshift generators. The value $f(a)$ is an integer, defined as in Equation~\ref{Formula}. Lastly, $\mathsf{N}$ is a constant defined by the user.
1010
1011
1012 % \begin{algorithm}
1013 % \textbf{Input:} the internal state $x$ (an array of $\mathsf{N}$ 1-bit words)\\
1014 % \textbf{Output:} an array $r$ of $\mathsf{N}$ 1-bit words
1015 % \begin{algorithmic}[1]
1016
1017 % \STATE$a\leftarrow{XORshift1()}$;
1018 % \STATE$m\leftarrow{a~mod~2+c}$;
1019 % \WHILE{$i=0,\dots,m$}
1020 % \STATE$b\leftarrow{XORshift2()}$;
1021 % \STATE$S\leftarrow{b~mod~\mathsf{N}}$;
1022 % \STATE$x_S\leftarrow{ \overline{x_S}}$;
1023 % \ENDWHILE
1024 % \STATE$r\leftarrow{x}$;
1025 % \STATE return $r$;
1026 % \medskip
1027 % \caption{An arbitrary round of the old CI(XORshift,XORshift) generator}
1028 % \label{Chaotic iteration2}
1029 % \end{algorithmic}
1030 % \end{algorithm}
1031
1032
1033 % \subsection{Old CI(XORshift,XORshift) example}
1034
1035
1036
1037 % In this example, $\mathsf{N} = 5$ and $\mathcal{M} = \{\text{4,5}\}$ are adopted for easy understanding.
1038 % The initial state of the system $x^0$ can be seeded by the decimal part of the current time. For example, the current time in seconds since the Epoch is 1237632934.484084, so $t = 484084$. $x^0 = t \text{ (mod 32)}$ in binary digits, then $x^0 = (1, 0, 1, 0, 0)$. $m$ and $S$ can now be computed from two XORshift PRNGs:
1039
1040 % $m$ = 4, 5, 4, 4, 4, 4, 5, 5, 5, 5, 4, 5, 4,...
1041
1042 % $S$ = 2, 4, 2, 2, 5, 1, 1, 5, 5, 3, 2, 3, 3,...
1043
1044 % Chaotic iterations are done with initial state $x^0$, vectorial logical negation $f_0$ and strategy $S$. The result is presented in Table \ref{Table:old CI}. Let us recall that sequence $m$ gives the states $x^n$ to return: $x^4, x^{4+5}, x^{4+5+4}, \hdots$
1045
1046
1047 % \begin{tiny}
1048 % \begin{table}[!t]
1049 % \renewcommand{\arraystretch}{1.3}
1050 % \caption{Application example (Old CI generator)}
1051 % \label{Table:old CI}
1052 % \centering
1053 % \begin{tabular}{c|c@{}c@{}c@{}c@{}c|c@{}c@{}c@{}c@{}c@{}c|c@{}c@{}c@{}c@{}c@{}c}
1054 % \hline\hline
1055 % $m:$ & & & 4 & & & & & 5 & & & & & & 4 & & & \\ \hline
1056 % $S$ & 2 & 4 & 2 & 2 & & 5 & 1 & 1 & 5 & 5 & & 3 & 2 & 3 & 3 & & \\ \hline
1057 % $x^{0}$ & & & & & $x^{4}$ & & & & & & $x^{9}$ & & & & & $x^{13}$ & \\
1058 % %1ere ligne
1059 % 1 & & & & &
1060 % 1 & & $\xrightarrow{1} 0$ & $\xrightarrow{1} 1$ & & &
1061 % 1 & & & & &
1062 % 1 & \\
1063 % %2eme ligne
1064 % 0 & $\xrightarrow{2} 1$ & & $\xrightarrow{2} 0$ & $\xrightarrow{2} 1$ &
1065 % 1 & & & & & &
1066 % 1 & & $\xrightarrow{2} 0$ & & & 0 &\\
1067 % %3eme ligne
1068 % 1 & & & & &
1069 % 1 & & & & & &
1070 % 1 & $\xrightarrow{3} 0$ & & $\xrightarrow{3} 1$ & $\xrightarrow{3} 0$ &
1071 % 0 &\\
1072 % % 4eme ligne
1073 % 0 & & $\xrightarrow{4} 1$ & & &
1074 % 1 & & & & & &
1075 % 1 & & & & &
1076 % 1 &\\
1077 % %5eme ligne
1078 % 0 & & & & &
1079 % 0 & $\xrightarrow{5} 1$ & & & $\xrightarrow{5} 0$ & $\xrightarrow{5} 1$ &
1080 % 1 & & & & &
1081 % 1 &\\
1082 % \hline\hline
1083 % \end{tabular}\\
1084 % \vspace{0.5cm}
1085 % Output: $x_1^{0}x_2^{0}x_3^{0}x_4^{0}x_5^{0}x_1^{4}x_2^{4}x_3^{4}x_4^{4}x_5^{4}x_1^{9}x_2^{9}x_3^{9}x_4^{9}$
1086 % $x_5^{9}x_1^{13}x_2^{13}x_3^{13}x_4^{13}x_5^{13}... = 10100111101111110011...$
1087 % \end{table}
1088 % \end{tiny}
1089 % So, in this example, the output of the generator is: 10100111101111110011...
1090
1091
1092
1093 % \begin{algorithm}
1094 % \textbf{Input:} the internal state $x$ ($\mathsf{N}$ bits)\\
1095 % \textbf{Output:} a state $r$ of $\mathsf{N}$ bits
1096 % \begin{algorithmic}[1]
1097 % \FOR{$i=0,\dots,N$}
1098 % {
1099 % \STATE$d_i\leftarrow{0}$\;
1100 % }
1101 % \ENDFOR
1102 % \STATE$a\leftarrow{XORshift1()}$\;
1103 % \STATE$m\leftarrow{f(a)}$\;
1104 % \STATE$k\leftarrow{m}$\;
1105 % \WHILE{$i=0,\dots,k$}
1106
1107 % \STATE$b\leftarrow{XORshift2()~mod~\mathsf{N}}$\;
1108 % \STATE$S\leftarrow{b}$\;
1109 %     \IF{$d_S=0$}
1110 %     {
1111 % \STATE      $x_S\leftarrow{ \overline{x_S}}$\;
1112 % \STATE      $d_S\leftarrow{1}$\;
1113 %     
1114 %     }
1115 %     \ELSIF{$d_S=1$}
1116 %     {
1117 % \STATE      $k\leftarrow{ k+1}$\;
1118 %     }\ENDIF
1119 % \ENDWHILE
1120 % $r\leftarrow{x}$\;
1121 % return $r$\;
1122 % \medskip
1123 % \caption{An arbitrary round of the new CI(XORshift,XORshift) generator}
1124 % \label{Chaotic iteration1}
1125 % \end{algorithmic}
1126 % \end{algorithm}
1127
1128
1129
1130
1131
1132 % \subsection{New CI(XORshift,XORshift) example}
1133
1134 % In this example, $\mathsf{N} = 4$ is chosen for easy understanding.
1135 % The initial state of the system $x^0$ can be seeded another time by the decimal part $t$ of the current time. 
1136 % For example, if the current time in seconds since the Epoch is 1237632934.484088, 
1137 % so $t = 484088$, then $x^0 = t \text{ (mod 16)}$ in binary digits, \emph{i.e.}, $x^0 = ( 0, 1, 0, 0)$. 
1138
1139 % To compute $m$ sequence, Equation~\ref{Formula} can be adapted to this example as follows:
1140 % \begin{equation}
1141 % \label{m1 fuction}
1142 % m^n=f(y^n)=
1143 % \left\{
1144 % \begin{array}{llccccc}
1145 % 0 & \text{ if }&0                             &\leqslant&\frac{y^n}{2^{32}}&<&\frac{1}{16},\\
1146 % 1 & \text{ if }&\frac{1}{16}                  &\leqslant&\frac{y^n}{2^{32}}&<&\frac{5}{16} ,\\
1147 % 2 & \text{ if }&\frac{5}{16}                  &\leqslant&\frac{y^n}{2^{32}}&<&\frac{11}{16},\\
1148 % 3 & \text{ if }&\frac{11}{16}                 &\leqslant&\frac{y^n}{2^{32}}&<&\frac{15}{16},\\
1149 % 4 & \text{ if }&\frac{15}{16}                 &\leqslant&\frac{y^n}{2^{32}}&<&1,\\
1150 % \end{array}
1151 % \right.
1152 % \end{equation}
1153
1154 % \noindent where $y$ is generated by XORshift seeded with the current time. We can see that the probabilities of occurrences of $m=0$, $m=1$, $m=2$, $m=3$, $m=4$, are $\frac{1}{16}$, $\frac{4}{16}$, $\frac{6}{16}$, $\frac{4}{16}$, $\frac{1}{16}$, respectively. This $m$ determines what will be the next output $x$. For instance, 
1155 % \begin{itemize}
1156 % \item If $m=0$, the following $x$ will be $( 0, 1, 0, 0)$.
1157 % \item If $m=1$, the following $x$ can be $( 1, 1, 0, 0)$, $( 0, 0, 0, 0)$, $( 0, 1, 1, 0)$, or $( 0, 1, 0, 1)$.
1158 % \item If $m=2$, the following $x$ can be $( 1, 0, 0, 0)$, $( 1, 1, 1, 0)$, $( 1, 1, 0, 1)$, $( 0, 0, 1, 0)$, $( 0, 0, 0, 1)$, or $( 0, 1, 1, 1)$.
1159 % \item If $m=3$, the following $x$ can be $( 0, 0, 1, 1)$, $( 1, 1, 1, 1)$, $( 1, 0, 0, 1)$, or $( 1, 0, 1, 0)$.
1160 % \item If $m=4$, the following $x$ will be $( 1, 0, 1, 1)$.
1161 % \end{itemize}
1162
1163 % In this simulation, $m = 0, 4, 2, 2, 3, 4, 1, 1, 2, 3, 0, 1, 4,...$ Additionally, $b$ is computed with a XORshift generator too, but with another seed. We have found $b = 1, 4, 2, 2, 3, 3, 4, 1, 1, 4, 3, 2, 1,...$
1164
1165 % Chaotic iterations are made with initial state $x^0$, vectorial logical negation $f_0$ and 
1166 % strategy $S$. The result is presented in Table~\ref{table application example}. Let us recall that sequence $m$ gives, after decimation, the states $x^n$ to return, which are here $x^0, x^{0+4}, x^{0+4+2}, \hdots$ So, in this example, the output of the generator is: 0100101110000001... or 4,11,8,1... 
1167
1168
1169
1170
1171
1172
1173 % \begin{table}[!t]
1174 % \label{CI(XORshift, XORshift) algorithm}
1175 % %\renewcommand{\arraystretch}{1.3}
1176 % \centering
1177 % % \begin{tabular}{0.75\textwidth}{|c|cc|cccccc|ccc|cccc|}
1178 % \begin{tabular}{|c|c@{}c|c@{}c@{}c@{}c@{}c@{}c|c@{}c@{}c|c@{}c@{}c@{}c|}
1179 % \hline
1180 % $m$ &0 & &4 & & & & & &2& &&2&&  &  \\ \hline
1181 % $k$ &0 & &4 & & &$+1$ & & &2& &&2&$+1$&  &  \\ \hline
1182 % $b$  &  & &1 &4&2&\underline{2}       &3& &3&4&&1&\underline{1}      &4&\\ \hline
1183 % $d$  &r  & &r~$\left(\begin{array}{c}1\\0\\0\\0\end{array}\right)$ & $\left(\begin{array}{c}1\\0\\0\\1\end{array}\right)$ & $\left(\begin{array}{c}1\\1\\0\\1\end{array}\right)$ & & $\left(\begin{array}{c}1\\1\\1\\1\end{array}\right)$ && r~$\left(\begin{array}{c}0\\0\\1\\0\end{array}\right)$ &$\left(\begin{array}{c}0\\0\\1\\1\end{array}\right)$ &&r~$\left(\begin{array}{c}1\\0\\0\\0\end{array}\right)$ & &$\left(\begin{array}{c}1\\0\\0\\1\end{array}\right)$  &  \\ \hline
1184 % $S$  &  & &1 &4&2&        &3& &3&4&&1& &4 &  \\ \hline
1185 % $x^{0}$ &  &$x^{0}$ & & &  
1186 % &  & &$x^{4}$ & & &   
1187 % $x^{6}$& & &&$x^{8}$  \\
1188 % %1ere ligne
1189 % 0 & &0 &$\xrightarrow{1} 1$ & &
1190 %  & &   &1   & & &
1191 % 1 &$\xrightarrow{1} 0$ & & & 0\\
1192 % %2eme ligne
1193 % 1 &  &1 &   &   &
1194 % $\xrightarrow{2} 0$ & & &0 & & &
1195 % 0 & &  &&0\\
1196 % %3eme ligne
1197 % 0 & &0 & & &
1198 %  & &$\xrightarrow{3} 1$ &1 &$\xrightarrow{3} 0$ & &
1199 % 0 &   & & &0  \\
1200 % % 4eme ligne
1201 % 0 & &0  & &$\xrightarrow{4} 1$ &
1202 %  & & &1 & &$\xrightarrow{4} 0$ &
1203 % 0 & & &$\xrightarrow{4} 1$&1 \\
1204 % \hline
1205 % \end{tabular}\\
1206 % \vspace{0.5cm}
1207 % Binary Output: $x_1^{0}x_2^{0}x_3^{0}x_4^{0}x_1^{4}x_2^{4}x_3^{4}x_4^{4}x_1^{6}x_2^{6}... = 0100101110000001...$\\
1208 % Integer Output:
1209 % $x^{0},x^{4},x^{6},x^{8}... = 4,11,8,1...$
1210 % \caption{Example of New CI(XORshift,XORshift) generation}
1211 % \label{table application example}
1212 % \end{table}
1213
1214