<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE article  PUBLIC "-//NLM//DTD Journal Publishing DTD v3.0 20080202//EN" "http://dtd.nlm.nih.gov/publishing/3.0/journalpublishing3.dtd"><article xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" dtd-version="3.0" xml:lang="en" article-type="research article"><front><journal-meta><journal-id journal-id-type="publisher-id">JCC</journal-id><journal-title-group><journal-title>Journal of Computer and Communications</journal-title></journal-title-group><issn pub-type="epub">2327-5219</issn><publisher><publisher-name>Scientific Research Publishing</publisher-name></publisher></journal-meta><article-meta><article-id pub-id-type="doi">10.4236/jcc.2016.44007</article-id><article-id pub-id-type="publisher-id">JCC-65372</article-id><article-categories><subj-group subj-group-type="heading"><subject>Articles</subject></subj-group><subj-group subj-group-type="Discipline-v2"><subject>Computer Science&amp;Communications</subject></subj-group></article-categories><title-group><article-title>
 
 
  Ensuring Quality of Random Numbers from TRNG: Design and Evaluation of Post-Processing Using Genetic Algorithm
 
</article-title></title-group><contrib-group><contrib contrib-type="author" xlink:type="simple"><name name-style="western"><surname>ose</surname><given-names>J. Mijares Chan</given-names></name><xref ref-type="aff" rid="aff1"><sup>1</sup></xref></contrib><contrib contrib-type="author" xlink:type="simple"><name name-style="western"><surname>Parimala</surname><given-names>Thulasiraman</given-names></name><xref ref-type="aff" rid="aff2"><sup>2</sup></xref></contrib><contrib contrib-type="author" xlink:type="simple"><name name-style="western"><surname>Gabriel</surname><given-names>Thomas</given-names></name><xref ref-type="aff" rid="aff1"><sup>1</sup></xref></contrib><contrib contrib-type="author" xlink:type="simple"><name name-style="western"><surname>Ruppa</surname><given-names>Thulasiram</given-names></name><xref ref-type="aff" rid="aff2"><sup>2</sup></xref></contrib></contrib-group><aff id="aff1"><addr-line>Electrical and Computer Engineering Department-Faculty of Engineering, University of Manitoba, 
Winnipeg, Canada</addr-line></aff><aff id="aff2"><addr-line>Computer Science Department, Faculty of Science, University of Manitoba, Winnipeg, Canada</addr-line></aff><pub-date pub-type="epub"><day>18</day><month>03</month><year>2016</year></pub-date><volume>04</volume><issue>04</issue><fpage>73</fpage><lpage>92</lpage><history><date date-type="received"><day>19</day>	<month>February</month>	<year>2016</year></date><date date-type="rev-recd"><day>accepted</day>	<month>5</month>	<year>April</year>	</date><date date-type="accepted"><day>8</day>	<month>April</month>	<year>2016</year></date></history><permissions><copyright-statement>&#169; Copyright  2014 by authors and Scientific Research Publishing Inc. </copyright-statement><copyright-year>2014</copyright-year><license><license-p>This work is licensed under the Creative Commons Attribution International License (CC BY). http://creativecommons.org/licenses/by/4.0/</license-p></license></permissions><abstract><p>
 
 
  Random numbers generated by pseudo-random and true random number generators (TRNG) are used in a wide variety of important applications. A TRNG relies on a non-deterministic source to sample random numbers. In this paper, we improve the post-processing stage of TRNGs using a heuristic evolutionary algorithm. Our post-processing algorithm decomposes the problem of improving the quality of random numbers into two phases: (i) Exact Histogram Equalization: it modifies the random numbers distribution with a specified output distribution; (ii) Stationarity Enforcement: using genetic algorithms, the output of (ii) is permuted until the random numbers meet wide-sense stationarity. We ensure that the quality of the numbers generated from the genetic algorithm is within a specified level of error defined by the user. We parallelize the genetic algorithm for improved performance. The post-processing is based on the power spectral density of the generated numbers used as a metric. We propose guideline parameters for the evolutionary algorithm to ensure fast convergence, within the first 100 generations, with a standard deviation over the specified quality level of less than 0.45. We also include a TestU01 evaluation over the random numbers generated.
 
</p></abstract><kwd-group><kwd>True Random Number Generators</kwd><kwd> Genetic Algorithms</kwd><kwd> Auto-Correlation</kwd><kwd> Entropy</kwd><kwd> Power Spectral Density</kwd></kwd-group></article-meta></front><body><sec id="s1"><title>1. Introduction</title><p>As we move towards the Big data and the exascale era, with the Internet and many communication devices becoming more prevalent, cyber-security is becoming increasingly important. Many real world computational science applications (such as finance, medicine, and social networks among others) produce tremendous amount of data that not only require a larger storage capacity such as Cloud, but also secure methods for preserving the data from harmful threats.</p><p>In recent years, different solution paths had been explored such as new security models [<xref ref-type="bibr" rid="scirp.65372-ref1">1</xref>] - [<xref ref-type="bibr" rid="scirp.65372-ref3">3</xref>] , analytical tools [<xref ref-type="bibr" rid="scirp.65372-ref4">4</xref>] , prevention strategies [<xref ref-type="bibr" rid="scirp.65372-ref5">5</xref>] , keys and random numbers management systems [<xref ref-type="bibr" rid="scirp.65372-ref6">6</xref>] and more relevant to this study, random number generation schemes [<xref ref-type="bibr" rid="scirp.65372-ref7">7</xref>] . Traditionally, the backbone solution for many of the security issues is the use of cryptographic algorithms. A cryptographic algorithm is used for securing private communi- cation over untrusted environments. These algorithms are usually key-based and depend on the strength of random numbers used to generate the keys [<xref ref-type="bibr" rid="scirp.65372-ref8">8</xref>] .</p><p>Over the past few years, with its increasing popularity and wide coverage, Cloud computing has become an important and frequent solution for storage of Big data. There are many challenges to address, one being the new security challenges. Among these new challenges, the combination of managing and storing the keys that provide access to the client’s encrypted data can lead to multiple hazardous situations [<xref ref-type="bibr" rid="scirp.65372-ref9">9</xref>] . A poor key manage- ment scheme can expose the system to unauthorized access, data breaches and lack of control caused by having multiple clients sharing the same resource. It can also expose scenarios where network-based cross-client attacks can occurr over shared network infrastructure components. In the same way, other scenarios include losing control over the network infrastructure, either real or virtualized.</p><p>The poor key management problem is exacerbated by two important factors: the accidental key replication and/or the weak random number generation [<xref ref-type="bibr" rid="scirp.65372-ref9">9</xref>] . The first factor is due to a weak security policy. It occurs during the cloning of a virtual machine as part of an on-demand service, and in consequence, the cloned images could contain information that is not intended to be public. The second factor is introduced when the entropy level found in the host is insufficient, which compromises the statistical properties of the random numbers. These situations are created by either the virtualization of hardware that delivers a lower entropy level than is expected, or by having too many clients on the same host exhausting the entropy that the host can deliver.</p><p>In general, random numbers are generated using a pseudo-random number generator (PRNG), a true-random number generator (TRNG) or a combination of both [<xref ref-type="bibr" rid="scirp.65372-ref10">10</xref>] . A PRNG is an algorithm that in combination with a given seed creates a deterministic sequence with the characteristic of being forward and backward unpredictable. The sequence is forward unpredictable, when the history of output numbers do not lead to predict the next output value; if the seed used to create the sequence is unknown, consecutive output sequence numbers cannot backtrack to the unknown seed, creating a sequence that is also backward unpredictable. The PRNGs main drawback is being predictable if the seed and the algorithm are known. This is dangerous and vulnerable to attacks. Despite this, the National Institute of Standards and Technology (NIST) [<xref ref-type="bibr" rid="scirp.65372-ref11">11</xref>] has tried to standardize the selection method for the generator, as well as, suggesting a list of approved PRNGs for cryptographic algorithms [<xref ref-type="bibr" rid="scirp.65372-ref12">12</xref>] .</p><p>On the contrary, true random generators provide stronger solution. These types of generators use non- deterministic or unpredictable sources to generate random numbers, like thermal, avalanche or atmospheric noise. The random number generation process consists of two phases: extraction and post-processing. In the extraction phase, a non-deterministic source is sampled to extract the random numbers. This sampled values may not be completely unbiased or consistent. Therefore, in the post-processing phase, the extracted random numbers undergo a strenuous process that modifies the numbers to satisfy the designed statistical properties - in other words, ensure that the numbers are close to be independent and identically distributed (i.i.d.) with uniform distribution [<xref ref-type="bibr" rid="scirp.65372-ref13">13</xref>] . Although the research on PRNGs has been exhaustively covered, the generation of seeds based on a TRNG has been overlooked [<xref ref-type="bibr" rid="scirp.65372-ref11">11</xref>] . Given its unpredictability of the random numbers, gaming machines and strong cryptographic applications apply a scheme where a TRNGs seeds a PRNG. In this paper, we focus on the TRNG post-processing.</p><p>In the literature, there are multiple types of sources, design and extraction techniques [<xref ref-type="bibr" rid="scirp.65372-ref14">14</xref>] [<xref ref-type="bibr" rid="scirp.65372-ref15">15</xref>] for TRNGs, making it a complicated case for standardization [<xref ref-type="bibr" rid="scirp.65372-ref11">11</xref>] . In some cases, the design uses a thermal noise circuit that is amplified and sampled [<xref ref-type="bibr" rid="scirp.65372-ref14">14</xref>] . In [<xref ref-type="bibr" rid="scirp.65372-ref16">16</xref>] the design focuses on sampling the jitters of a phase-locked loop circuit found on ASIC based technologies. In [<xref ref-type="bibr" rid="scirp.65372-ref17">17</xref>] the authors exploit the features found in digital circuits, like the meta-stable state of flip-flop circuits. As well, researchers have also explored the use of random sources from audio and video signals [<xref ref-type="bibr" rid="scirp.65372-ref18">18</xref>] .</p><p>Intel introduced the Intel random number generator [<xref ref-type="bibr" rid="scirp.65372-ref19">19</xref>] , relying on the unpredictability of the thermal noise to modulate the frequency of a clock signal as a source of random binary digits. The design also included a post- processing stage, involving a von Neumann corrector to statistically balance the outputs from data with a bias. Intel re-engineered [<xref ref-type="bibr" rid="scirp.65372-ref20">20</xref>] its own true random number generator in 2011, providing a solution to security threats on the Ivy Bridge processor. In this new design, the noise circuit relied on the thermal noise and the meta-stable state of a R/S Latch, where the source of random binary digits is located at the output of the R/S Latch. One of the main features of this new design is the on-line health tests or On-line Self Test Entropy (OSTE), that empirically test the frequency of binary patterns within a certain range of test against intentional attacks. Using these tests, the random numbers with only the healthy sequences are appended to an entropy pool, from which random numbers are later picked up. Another source for TRNGs are the ones based on race conditions between CPU threads while updating shared variables. This creates a non-deterministic behavior on the value of the updated variable. Colesa et al. [<xref ref-type="bibr" rid="scirp.65372-ref15">15</xref>] took advantage of this phenomena. Their study suggests that the execution environment’s irregularities, the number of cache misses, the number of instructions executed in the pipeline and the imprecision of the hardware clock used for the timer interrupts are the main contributors to the random behavior observed in the shared variable. They claim that their design satisfies 90% of the standard NIST tests [<xref ref-type="bibr" rid="scirp.65372-ref11">11</xref>] .</p><p>In [<xref ref-type="bibr" rid="scirp.65372-ref21">21</xref>] , we developed a TRNG that generates high quality random numbers by exploiting the natural sources of randomness on the NVIDIA GPU video card such as race conditions during concurrent memory access. The digitized noise signal generated from non-deterministic sources passes through a post-processing algorithm, to ensure the random numbers follow an uniform distribution. Unlike Intel, which invokes the post-processing stage in hardware, our algorithm implements the post-processing step in software, providing flexibility and the capacity to scale the complexity of the algorithm design. The modularity of the design can be adapted to any noise source.</p><p>In this paper, the post-processing algorithm proposed on [<xref ref-type="bibr" rid="scirp.65372-ref22">22</xref>] for TRNGs is further explored focusing on a lighter version optimized for quality and performance, ensuring the generation of random numbers meet wide sense stationarity (w.s.s.). In the post-processing step, we apply an evolutionary based genetic algorithm (GA) heuristic that exploits the inherent parallelism avoiding all data dependencies to produce uniform random numbers that satisfies the same statistical properties over time, thereby enforcing stationarity. We ensure that the quality of the numbers generated from the genetic algorithm is within a specified level of error. As well a detailed evaluation using the statistical battery test from L’Ecuyers TestU01 [<xref ref-type="bibr" rid="scirp.65372-ref23">23</xref>] is provided.</p><p>The rest of this paper is organized as follows. In Section 2, we give a brief theoretical introduction about the properties of random numbers, its metrics and algorithms. In Section 3, we present our TRNG framework. Section 4 presents the post-processing phase which includes the genetic algorithm. Section 6 presents the results of the evaluations stated in Section 5. Finally in Section 7, we conclude our work and suggest future work.</p></sec><sec id="s2"><title>2. Properties of Random Numbers</title><p>Random numbers are a type of numbers that when chosen, its selection process reproduces the characteristics of an underlying distribution. Conceptually, a random number is generated from a random process with the intention to be nearly indistinguishable from a random behavior [<xref ref-type="bibr" rid="scirp.65372-ref13">13</xref>] . Nevertheless, the study of computer- generated random numbers is a fascinating area of research that has been addressed by multiple researchers [<xref ref-type="bibr" rid="scirp.65372-ref13">13</xref>] [<xref ref-type="bibr" rid="scirp.65372-ref24">24</xref>] - [<xref ref-type="bibr" rid="scirp.65372-ref26">26</xref>] . Formally, we can define a random number as an outcome of a random variable X, that takes on different values, <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x6.png" xlink:type="simple"/></inline-formula>with a probability distribution<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x7.png" xlink:type="simple"/></inline-formula>, usually assumed to be an uniform</p><p>distribution<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x8.png" xlink:type="simple"/></inline-formula>. Once S is defined as a sample space or domain, S can be used to map X to its range x. Then, the i-th random number, <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x9.png" xlink:type="simple"/></inline-formula>, can be expressed by <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x10.png" xlink:type="simple"/></inline-formula> where<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x11.png" xlink:type="simple"/></inline-formula>. The <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x12.png" xlink:type="simple"/></inline-formula> index can represent the sample index on a sequence, and it can also be associated to a time index in the generation of this random numbers. For example, as in <xref ref-type="fig" rid="fig1">Figure 1</xref>(a), we can observe multiple realizations of X, where the i-th realization of X, <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x13.png" xlink:type="simple"/></inline-formula>is mapped by <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x14.png" xlink:type="simple"/></inline-formula> representing a sample between 0 and 1 at the maximum resolution</p><p>using a IEEE 754 floating point format. In general, a random number should meet two basic conditions to be considered random: have an uniform distribution and be unpredictable.</p><sec id="s2_1"><title>2.1. The Uniform Distribution of Random Numbers</title><p>In order to observe the distribution of x, the probability mass function (p.m.f.), or<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x15.png" xlink:type="simple"/></inline-formula>, is a useful tool that relies</p><fig-group id="fig1"><label><xref ref-type="fig" rid="fig1">Figure 1</xref></label><caption><title> A sample of 1024 random numbers (a); and the patterns between contiguous random numbers (b).</title></caption><fig id ="fig1_1"><label>(b)</label><graphic mimetype="image"   position="float"  xlink:type="simple"  xlink:href="http://html.scirp.org/file/7-1730326x16.png"/></fig><fig id ="fig1_2"><label></label><graphic mimetype="image"   position="float"  xlink:type="simple"  xlink:href="http://html.scirp.org/file/7-1730326x17.png"/></fig></fig-group><p>on three properties. The p.m.f. is always positive, its summation of all the p.m.f. is 1.0, and the p.m.f. can be used to calculate the probability of an event by adding all the elements that conform that event. Under ideal conditions, x should follow an uniform distribution, as in p.m.f. in <xref ref-type="fig" rid="fig2">Figure 2</xref>(a). But in reality, for some random number generators this is difficult to achieve, a typical response is shown in <xref ref-type="fig" rid="fig2">Figure 2</xref>(d).</p></sec><sec id="s2_2"><title>2.2. The Correlation of Random Numbers</title><p>As well, in ideal conditions all elements of x should be uncorrelated. This can be observed as non-geometric patterns between pairs of contiguous realizations, like between <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x18.png" xlink:type="simple"/></inline-formula> as in <xref ref-type="fig" rid="fig1">Figure 1</xref>(b). Similarly, the uncorrelation of x can be proven by observing the shape of the autocorrelation function.</p><p>The autocorrelation is a mathematical tool that calculates the correlation between the elements on a sequence of numbers, like x. It is useful at identifying non-randomness in a sequence and its adequate time series model</p><p>[<xref ref-type="bibr" rid="scirp.65372-ref27">27</xref>] . The autocorrelation function, <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x19.png" xlink:type="simple"/></inline-formula>, is defined by the expectation between two elements in x separated by a k lag under the assumption that all elements of x are equi-distant [<xref ref-type="bibr" rid="scirp.65372-ref28">28</xref>] .</p><disp-formula id="scirp.65372-formula470"><label>(1)</label><graphic position="anchor" xlink:href="http://html.scirp.org/file/7-1730326x20.png"  xlink:type="simple"/></disp-formula><p>where <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x21.png" xlink:type="simple"/></inline-formula> is the lagged interval, N is the cardinality of x, <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x21.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x22.png" xlink:type="simple"/></inline-formula>and <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x21.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x22.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x23.png" xlink:type="simple"/></inline-formula> is the mean and standard deviation of x. As well, <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x21.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x22.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x23.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x24.png" xlink:type="simple"/></inline-formula>can be calculated by replacing <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x21.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x22.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x23.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x24.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x25.png" xlink:type="simple"/></inline-formula> and <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x21.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x22.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x23.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x24.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x25.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x26.png" xlink:type="simple"/></inline-formula> for the sample mean <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x21.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x22.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x23.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x24.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x25.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x26.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x27.png" xlink:type="simple"/></inline-formula> and the sample variance,</p><disp-formula id="scirp.65372-formula471"><label>(2)</label><graphic position="anchor" xlink:href="http://html.scirp.org/file/7-1730326x28.png"  xlink:type="simple"/></disp-formula><p>When there is no lag or<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x29.png" xlink:type="simple"/></inline-formula>, the autocorrelation reaches it’s maximum value,<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x29.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x30.png" xlink:type="simple"/></inline-formula>. Differently, as <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x29.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x30.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x31.png" xlink:type="simple"/></inline-formula> the autocorrelation is always<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x29.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x30.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x31.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x32.png" xlink:type="simple"/></inline-formula>. Since the denominator in (2) normalizes the output, the</p><fig id="fig2"  position="float"><label><xref ref-type="fig" rid="fig2">Figure 2</xref></label><caption><title> Probability mass function (a), autocorrelation (b) and power spectral density (c) of x random numbers in an ideal case scenario. Probability mass function (d); autocorrelation (e) and power spectral density (f) of x random numbers from a computer generated algorithm</title></caption><graphic mimetype="image"   position="float"  xlink:type="simple"  xlink:href="http://html.scirp.org/file/7-1730326x33.png"/></fig><p>autocorrelation function is bounded to<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x34.png" xlink:type="simple"/></inline-formula>. In an ideal case, the autocorrelation of a random sequence will</p><p>result in an impulse shape, as shown in <xref ref-type="fig" rid="fig2">Figure 2</xref>(b), showing that random numbers are only correlated at<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x35.png" xlink:type="simple"/></inline-formula>,</p><p>and uncorrelated at any other lag,<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x36.png" xlink:type="simple"/></inline-formula>. In reality, computer-generated random numbers hold small traces of correlation, having a close to zero response when <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x36.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x37.png" xlink:type="simple"/></inline-formula> as shown in <xref ref-type="fig" rid="fig2">Figure 2</xref>(e).</p><p>The execution of the autocorrelation function from (2) is a computational expensive task that requires a total of <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x38.png" xlink:type="simple"/></inline-formula> floating point operations and <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x38.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x39.png" xlink:type="simple"/></inline-formula> memory accesses. There are many other efficient algorithms, among them, the method based on the Wiener-Khinchin theorem. This method uses two Fast Fourier Transforms (FFT) to calculate the autocorrelation and in combination with a single pass variance calculation,</p><p>like the Welford method [<xref ref-type="bibr" rid="scirp.65372-ref29">29</xref>] [<xref ref-type="bibr" rid="scirp.65372-ref30">30</xref>] ; it takes <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x40.png" xlink:type="simple"/></inline-formula> floating point operations and <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x40.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x41.png" xlink:type="simple"/></inline-formula> memory accesses to calculate it. The algorithm includes the following operations,</p><disp-formula id="scirp.65372-formula472"><label>(3)</label><graphic position="anchor" xlink:href="http://html.scirp.org/file/7-1730326x42.png"  xlink:type="simple"/></disp-formula><disp-formula id="scirp.65372-formula473"><label>(4)</label><graphic position="anchor" xlink:href="http://html.scirp.org/file/7-1730326x43.png"  xlink:type="simple"/></disp-formula><p>where in (3), <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x44.png" xlink:type="simple"/></inline-formula>represent the complex conjugate operation of the<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x44.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x45.png" xlink:type="simple"/></inline-formula>, the <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x44.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x45.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x46.png" xlink:type="simple"/></inline-formula> operation involves calculating the Fast Fourier Transform of x after removing <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x44.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x45.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x46.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x47.png" xlink:type="simple"/></inline-formula> and zero padded to <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x44.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x45.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x46.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x47.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x48.png" xlink:type="simple"/></inline-formula> in size. Then, <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x44.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x45.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x46.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x47.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x48.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x49.png" xlink:type="simple"/></inline-formula>is the power spectral density of x in terms of frequency f, while in (4), <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x44.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x45.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x46.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x47.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x48.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x49.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x50.png" xlink:type="simple"/></inline-formula>is the inverse FFT</p><p>operation. As well in Equation (3), the variance, <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x51.png" xlink:type="simple"/></inline-formula>, is the Welford method implementation based on the following equations,</p><disp-formula id="scirp.65372-formula474"><label>(5)</label><graphic position="anchor" xlink:href="http://html.scirp.org/file/7-1730326x52.png"  xlink:type="simple"/></disp-formula><disp-formula id="scirp.65372-formula475"><label>(6)</label><graphic position="anchor" xlink:href="http://html.scirp.org/file/7-1730326x53.png"  xlink:type="simple"/></disp-formula><disp-formula id="scirp.65372-formula476"><label>(7)</label><graphic position="anchor" xlink:href="http://html.scirp.org/file/7-1730326x54.png"  xlink:type="simple"/></disp-formula><p>This implementation works well against losing precision due to having catastrophic cancellation, even though it is slightly slower than the naive method,</p><disp-formula id="scirp.65372-formula477"><label>(8)</label><graphic position="anchor" xlink:href="http://html.scirp.org/file/7-1730326x55.png"  xlink:type="simple"/></disp-formula></sec><sec id="s2_3"><title>2.3. The Spectral Density of Random Numbers</title><p>Another useful tool to review the uncorrelation of random numbers is the power spectral density. It relies on the fact that through Fourier analysis, x can be decomposed into frequency components where it describes the energy distribution per unit of frequency, a distinctive signature between sequences of numbers. The relation between the autocorrelation and the power spectral density can be established with the Wiener-Khinchin theorem, which works under the assumption of x is the output of a stationary process. The stationarity of random numbers will be addressed in the following subsection. For the moment, consider that the power spectral density function is formally be defined as</p><disp-formula id="scirp.65372-formula478"><label>(9)</label><graphic position="anchor" xlink:href="http://html.scirp.org/file/7-1730326x56.png"  xlink:type="simple"/></disp-formula><p>where f is the frequencies at which the power spectral density is evaluated, and i is the imaginary unit. Its</p><p>implementation can follow the proposed algorithm in (3), which only involves <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x57.png" xlink:type="simple"/></inline-formula> floating point operations and <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x57.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x58.png" xlink:type="simple"/></inline-formula> memory accesses. Under ideal conditions, the power spectral</p><p>density of random numbers has a step function response at 1, as shown in <xref ref-type="fig" rid="fig2">Figure 2</xref>(c). But in reality, due to the small peaks found at <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x59.png" xlink:type="simple"/></inline-formula> in the autocorrelation of <xref ref-type="fig" rid="fig2">Figure 2</xref>(e), the power spectral density spreads around 1 as in <xref ref-type="fig" rid="fig2">Figure 2</xref>(f).</p><p>Another property between the autocorrelation and the power spectral density is the distribution of the peaks found at <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x60.png" xlink:type="simple"/></inline-formula> in the autocorrelation. For simplicity, these peaks will be referred to as<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x60.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x61.png" xlink:type="simple"/></inline-formula>. Then, the distribution of <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x60.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x61.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x62.png" xlink:type="simple"/></inline-formula> can be fitted to a normal distribution, for example in <xref ref-type="fig" rid="fig2">Figure 2</xref>(e), <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x60.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x61.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x62.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x63.png" xlink:type="simple"/></inline-formula>. In other words, <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x60.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x61.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x62.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x63.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x64.png" xlink:type="simple"/></inline-formula>follows a normal distribution<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x60.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x61.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x62.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x63.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x64.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x65.png" xlink:type="simple"/></inline-formula>. This is</p><disp-formula id="scirp.65372-formula479"><label>(10)</label><graphic position="anchor" xlink:href="http://html.scirp.org/file/7-1730326x66.png"  xlink:type="simple"/></disp-formula><p>where r is the magnitude of elements in<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x67.png" xlink:type="simple"/></inline-formula>. Then, when mapping the <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x67.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x68.png" xlink:type="simple"/></inline-formula> from the autocorrelation towards the power spectral density, we can analytically find the shape of the points distribution around the ideal step function in the power spectral density, <xref ref-type="fig" rid="fig2">Figure 2</xref>(c), which happens to also follow a normal distribution [<xref ref-type="bibr" rid="scirp.65372-ref22">22</xref>] . This is done by using the characteristic function. The characteristic function of <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x67.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x68.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x69.png" xlink:type="simple"/></inline-formula> is denoted by<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x67.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x68.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x69.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x70.png" xlink:type="simple"/></inline-formula>, and it is the Fourier transform of<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x67.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x68.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x69.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x70.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x71.png" xlink:type="simple"/></inline-formula>. This is,</p><disp-formula id="scirp.65372-formula480"><label>(11)</label><graphic position="anchor" xlink:href="http://html.scirp.org/file/7-1730326x72.png"  xlink:type="simple"/></disp-formula><p>where t is the frequency at which <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x73.png" xlink:type="simple"/></inline-formula> is evaluated. In most cases, the characteristic function is used to describe a probabilistic distribution behavior over time. In our case, it is a helpful tool to describe that standard deviation of <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x73.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x74.png" xlink:type="simple"/></inline-formula> will always be smaller than the standard deviation from<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x73.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x74.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x75.png" xlink:type="simple"/></inline-formula>. In<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x73.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x74.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x75.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x76.png" xlink:type="simple"/></inline-formula>, the variance or <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x73.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x74.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x75.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x76.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x77.png" xlink:type="simple"/></inline-formula> is used as a denominator limiting the growth of the exponential to a small range; while in<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x73.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x74.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x75.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x76.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x77.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x78.png" xlink:type="simple"/></inline-formula>, the variance is used to magnify the growth of the exponential, making it more sensible to changes. This means that <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x73.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x74.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x75.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x76.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x77.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x78.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x79.png" xlink:type="simple"/></inline-formula> from (3) is more sensitive to variations from 1, than <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x73.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x74.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x75.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x76.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x77.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x78.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x79.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x80.png" xlink:type="simple"/></inline-formula> from (4) or (2) to the changes against an impulse shape. Besides</p><p>the sensitivity of the metric, the computational intensity, <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x81.png" xlink:type="simple"/></inline-formula>, of each algorithm can express the relation between the number of floating point operations(<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x81.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x82.png" xlink:type="simple"/></inline-formula>) and the memory access operations (<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x81.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x82.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x83.png" xlink:type="simple"/></inline-formula>) as in [<xref ref-type="bibr" rid="scirp.65372-ref31">31</xref>] .</p><p>Also, the computational intensity can be evaluated in terms of the data size, as shown in <xref ref-type="fig" rid="fig3">Figure 3</xref>(a). The autocorrelation from (2) shows to be data intensive in its majority, and only after the data size passes 2<sup>10</sup>, the number of floating points operations grow closely to the number of memory access operations, <xref ref-type="fig" rid="fig3">Figure 3</xref>(b) and <xref ref-type="fig" rid="fig3">Figure 3</xref>(c), where both keep a ratio of 1. However, the other two algorithms are compute intensive and follow a similar trend, since the power spectral density is necessary to compute the autocorrelation. As shown in <xref ref-type="fig" rid="fig3">Figure 3</xref>(a), the computational intensity of the FFT-based autocorrelation from (4) and the power spectral density from (3) is higher, but the number of floating point operations is smaller than the autocorrelation, <xref ref-type="fig" rid="fig3">Figure 3</xref>(b). Therefore the power spectral density is suited for long data segments where the computing architecture is ideal for massive floating point operations.</p></sec><sec id="s2_4"><title>2.4. The Stationarity of Random Numbers</title><p>In order to keep the consistency of the random numbers definition among realizations, the statistical charac- teristics also need to be constant. As discussed previously, the stationarity of random number generation is key concept in this. Therefore, a stationary process is a process characterized by keeping its p.m.f. constant for any</p><p>displacement over the sample indexes, this is<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x84.png" xlink:type="simple"/></inline-formula>. This condition is also known as strict or</p><p>strong-sense stationarity (s.s.s.). As well, process which are s.s.s. are also i.i.d. Unfortunately, in most cases s.s.s. is not achievable, therefore a less restrictive condition is used, wide-sense stationarity (w.s.s.) or covariance stationarity. A w.s.s. process requires only the mean and the autocorrelation to be constant over all sample indexes, presenting a more relaxed constraint.</p><p>According to Basu et al. [<xref ref-type="bibr" rid="scirp.65372-ref32">32</xref>] , one way to confirm the w.s.s. of a process is to compare the power spectral density among all segments of the output. Considering that x is the output, we will extend the notation of x, where <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x85.png" xlink:type="simple"/></inline-formula> is the j-th segment, so<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x85.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x86.png" xlink:type="simple"/></inline-formula>. Then,</p><disp-formula id="scirp.65372-formula481"><label>(12)</label><graphic position="anchor" xlink:href="http://html.scirp.org/file/7-1730326x87.png"  xlink:type="simple"/></disp-formula><p>where, <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x88.png" xlink:type="simple"/></inline-formula>and <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x88.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x89.png" xlink:type="simple"/></inline-formula> represent two different segments of x. Given that x has M segments, comparing the m segment to every other <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x88.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x89.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x90.png" xlink:type="simple"/></inline-formula> segments is computationally expensive. Therefore, we propose another strategy that relaxes this constraint, and reduces the computational burden from [<xref ref-type="bibr" rid="scirp.65372-ref22">22</xref>] . Taking advantage that <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x88.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x89.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x90.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x91.png" xlink:type="simple"/></inline-formula> has a</p><fig id="fig3"  position="float"><label><xref ref-type="fig" rid="fig3">Figure 3</xref></label><caption><title> Comparison of the autocorrelation, FFT-based autocorrelation and power spectral density algorithms analyzing (a) the computational intensity; (b) floating point operations and (c) memory access operation in terms of the data size N</title></caption><graphic mimetype="image"   position="float"  xlink:type="simple"  xlink:href="http://html.scirp.org/file/7-1730326x92.png"/></fig><p>normal distribution, we can introduce a user-specified standard deviation error,<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x93.png" xlink:type="simple"/></inline-formula>. Then, the segment will be ensured to be close to <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x93.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x94.png" xlink:type="simple"/></inline-formula> from being w.s.s., such that</p><disp-formula id="scirp.65372-formula482"><label>(13)</label><graphic position="anchor" xlink:href="http://html.scirp.org/file/7-1730326x95.png"  xlink:type="simple"/></disp-formula><p>The details on the algorithm and how (13) becomes an essential metric will be discussed on Section 4.</p></sec></sec><sec id="s3"><title>3. The Architecture of a TRNG</title><p>In general, there are three phases [<xref ref-type="bibr" rid="scirp.65372-ref11">11</xref>] [<xref ref-type="bibr" rid="scirp.65372-ref33">33</xref>] that are fundamental in the TRNG architecture, <xref ref-type="fig" rid="fig4">Figure 4</xref>:</p><p>3.1. The digitized noise source/extraction: This phase is composed of a noise source and a digitizer that periodically samples and outputs the digitized analog signal (DAS) random numbers. In this work we exploit the natural sources of randomness of the Intel DRNG available on Ivy Bridge Processors [<xref ref-type="bibr" rid="scirp.65372-ref34">34</xref>] , the values are being sampled from the /dev/random over a linux kernel.</p><p>3.2. The post-processing phase: This phase transforms the DAS random numbers from the previous phase, into internal random numbers by satisfying the given statistical properties of the distribution. In our case, we propose the post processing phase, <xref ref-type="fig" rid="fig4">Figure 4</xref>, to be divided into two blocks, histogram specification and stationarity enforcement, as previously suggested on [<xref ref-type="bibr" rid="scirp.65372-ref21">21</xref>] [<xref ref-type="bibr" rid="scirp.65372-ref22">22</xref>] . The histogram specification block maps the output of step 3.1, or DAS numbers, to the specified output distribution, in our case an uniform distribution. This block was studied in detail in [<xref ref-type="bibr" rid="scirp.65372-ref21">21</xref>] and will not be discussed further in this paper.</p><p>3.3. The buffer phase: This is usually optional and it represents the final phase. The buffered internal random numbers are outputted as the external random numbers.</p><p>In <xref ref-type="fig" rid="fig4">Figure 4</xref>, the output of the histogram specification block is referred to as semi-internal (s.i.) random numbers. The s.i. random numbers are then inputted to the stationarity enforcement block which further improves the generated random numbers. The main purpose of this block is to eliminate any periodicity traces found in s.i random numbers.</p><p>The stationarity enforcement block uses a genetic algorithm (GA) to permute the output (s.i. random numbers) from the histogram equalization block. It is within this block where we ensure the random numbers to meet w.s.s. by iterating with GA until the random numbers meet w.s.s with a user-defined error level or standard deviation,<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x96.png" xlink:type="simple"/></inline-formula>. Further details on the stationarity enforcement block will be discussed in Section 4.</p><fig id="fig4"  position="float"><label><xref ref-type="fig" rid="fig4">Figure 4</xref></label><caption><title> The architecture of a TRNG</title></caption><graphic mimetype="image"   position="float"  xlink:type="simple"  xlink:href="http://html.scirp.org/file/7-1730326x97.png"/></fig></sec><sec id="s4"><title>4. Proposed Algorithm: The Stationary Enforcement Block</title><p><xref ref-type="fig" rid="fig5">Figure 5</xref> illustrates the stationarity enforcement block. In this block, the s.i. random numbers, x, obtained from the histogram specification block are the input to the stationarity enforcement block in <xref ref-type="fig" rid="fig4">Figure 4</xref>. The s.i. random numbers may have small traces of periodicity not corrected by the histogram specification block, however, the histogram specification block guarantees x to follow an uniform distribution. Figures 6(a)-(f) show an example of DAS random numbers and semi-random numbers, including its p.m.f. and autocorrelation.</p><fig id="fig5"  position="float"><label><xref ref-type="fig" rid="fig5">Figure 5</xref></label><caption><title> The architecture of the stationarity enforcement block</title></caption><graphic mimetype="image"   position="float"  xlink:type="simple"  xlink:href="http://html.scirp.org/file/7-1730326x98.png"/></fig><fig id="fig6"  position="float"><label><xref ref-type="fig" rid="fig6">Figure 6</xref></label><caption><title> DAS Random numbers (a); its probabilistic mass function (b) and autocorrelation (c); Semi-internal random numbers (d); its probabilistic mass function (e) and autocorrelation (f)</title></caption><graphic mimetype="image"   position="float"  xlink:type="simple"  xlink:href="http://html.scirp.org/file/7-1730326x99.png"/></fig><p>In <xref ref-type="fig" rid="fig5">Figure 5</xref>, each block is considered as one phase (or step) in the proposed iterative algorithm.</p><p>4.1. Sampling semi-internal random numbers: As previously defined, x exhibits<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x100.png" xlink:type="simple"/></inline-formula>, an uniform distribu- tion. x will be consider to have a size of N. And <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x100.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x101.png" xlink:type="simple"/></inline-formula> will be the j-th segment of size M, that is sampled from x, such that the concatenation of all <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x100.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x101.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x102.png" xlink:type="simple"/></inline-formula> form x.</p><p>4.2. Shuffling random numbers with GA: In this stage, <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x103.png" xlink:type="simple"/></inline-formula>is passed through a genetic algorithm (GA) to alter its sequence order, which in consequence will have a major impact on the power spectral density. We explain our parallel GA implementation in Algorithm 1, which relies on the data non-dependencies to avoid synchronization as much as possible. Given the nature of GA, parallelism can be exploited at a coarse grain level. In this algorithm, we focus on removing the data dependencies, so a large number of threads can be launch without a synchronization constraint, allowing a finer-grain parallelism.</p><p>A traditional implementation of permutations-based GA involves generating the parents population of random numbers, followed by calculating the permutation indexes. For simplicity, the parents populations are sorted so the crossover operations are consistent among parents. A drawback of this is the need of unsorting the random numbers before evaluating them. Sorting, calculating the permutation indexes and unsorting them can take from</p><p><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x104.png" xlink:type="simple"/></inline-formula>operations at its best, and in its worst case <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x104.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x105.png" xlink:type="simple"/></inline-formula> operations. On the other hand,</p><p>our implementation involves generating the populations of permutation indexes representing the parents. This approach avoids sharing values between parents, instead, it only shares the indexes transferring the order pattern to the children. This approach only involves M operations.</p><p>The idea behind this algorithm is presented in Algorithm 1. The sequence order or indexes will be considered as a chromosome solution. As well, we introduce the idea of having an external population that migrates part of its genetic content to the pool, avoiding stagnation. Since, its parallel implementation takes advantage of the data independence, every thread holds a unique id, <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x106.png" xlink:type="simple"/></inline-formula>, and keeps updating a shared array, <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x106.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x107.png" xlink:type="simple"/></inline-formula>, in which only one memory position is accessed by a thread. In the following, we will explain all the processes that are used in Algorithm 1.</p><p>- Selection: This procedure selects the pool of permutation indexes. At this stage, the intention is to sample and select a group of permutation indexes that will be later used on the mating process inside the GA. The selec-</p><disp-formula id="scirp.65372-formula483"><graphic  xlink:href="http://html.scirp.org/file/7-1730326x108.png"  xlink:type="simple"/></disp-formula><p>tion procedure is illustrated in Algorithm 2. We implement the Fisher-Yates shuffle algorithm due to its uniformity among picking a random permutation and its generation speed [<xref ref-type="bibr" rid="scirp.65372-ref30">30</xref>] . So given that n is the number of vectors and M is the length of a vector, this algorithm will return a pool of permutation indexes, a.</p><p>- Evaluation: This process is focused on evaluating a pool of permutation indexes based on calculating the standard deviation of the power spectral density from Equation (3), as is detailed in Algorithm 3.</p><p>- Cross Over: This process is focused on the cross over operation. The Order 1 cross over is a simple permutation based crossover that connects one group of indexes from one parent with the remaining indexes of the other parent. The process is showed in detail in Algorithm 4.</p><p>- Mutation: This process is focused on the mutation operation. The exchange mutation, as in Algorithm 5 is a simple technique that only 5% of the times it selects randomly two indexes and swaps their positions.</p><p>- Replacement: This process is dedicated to applying elitism by selecting the best sets of indexes based on their fitness values [<xref ref-type="bibr" rid="scirp.65372-ref35">35</xref>] [<xref ref-type="bibr" rid="scirp.65372-ref36">36</xref>] . It also updates the pool of parents with the best sets possible. This process takes on consideration the pool of children and the pool of externals, which have a key purpose for escaping local minimas or stagnation over the fitness function. The replacement process is described further detail in Algori- thm 6.</p><disp-formula id="scirp.65372-formula484"><graphic  xlink:href="http://html.scirp.org/file/7-1730326x109.png"  xlink:type="simple"/></disp-formula><disp-formula id="scirp.65372-formula485"><graphic  xlink:href="http://html.scirp.org/file/7-1730326x110.png"  xlink:type="simple"/></disp-formula><disp-formula id="scirp.65372-formula486"><graphic  xlink:href="http://html.scirp.org/file/7-1730326x111.png"  xlink:type="simple"/></disp-formula><disp-formula id="scirp.65372-formula487"><graphic  xlink:href="http://html.scirp.org/file/7-1730326x112.png"  xlink:type="simple"/></disp-formula><disp-formula id="scirp.65372-formula488"><graphic  xlink:href="http://html.scirp.org/file/7-1730326x113.png"  xlink:type="simple"/></disp-formula><p>- Termination condition: The GA exits when the fitness is<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x114.png" xlink:type="simple"/></inline-formula>. If the condition is successful, the algorithm proceeds to update<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x114.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x115.png" xlink:type="simple"/></inline-formula>, and in consequence any other thread running will stop by the</p><p>end of its iteration as shown in 1 at line 6; then the algorithm returns the best sequence of random numbers found, <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x116.png" xlink:type="simple"/></inline-formula>or the answer for the j-th segment,<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x116.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x117.png" xlink:type="simple"/></inline-formula>. Otherwise, if the condition is unsuccessful the algorithm loops back to the cross over stage on the GA, line 7.</p><p>4.3-4.5. Handling the output buffer: In <xref ref-type="fig" rid="fig5">Figure 5</xref>, the output of the GA in 4.2, <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x118.png" xlink:type="simple"/></inline-formula>, is pushed into the buffer y. Then if the buffer is not full yet, it will loop back the algorithm to sample the semi-internal random numbers at step 4.1. Otherwise y is pushed out as the internal random numbers.</p></sec><sec id="s5"><title>5. Evaluation Methodology</title><p>In this section, we introduce a group of tests to show two aspects: first, the characteristics of the random number generation aided by the GA post-processing; and second, the strengths and weaknesses of the algorithm against the SmallCrush battery test [<xref ref-type="bibr" rid="scirp.65372-ref23">23</xref>] when changing the segment size . The results of these tests are presented in Section 6.</p><p>5.1. Characteristics of a GA post-processing stage: In this evaluation, we follow the m segment of random numbers analyzing step by step the change on<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x119.png" xlink:type="simple"/></inline-formula>, its autocorrelation or <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x119.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x120.png" xlink:type="simple"/></inline-formula> from Equation (4), its power spectral density or <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x119.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x120.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x121.png" xlink:type="simple"/></inline-formula> from (3) and its distribution described by its probability mass function or<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x119.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x120.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x121.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x122.png" xlink:type="simple"/></inline-formula>. The evaluation is iterated over a loop from step 6 - 12 in Algorithm 1 or generation, until the standard deviation of the power spectral density, or<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x119.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x120.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x121.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x122.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x123.png" xlink:type="simple"/></inline-formula>, is smaller than the user specified quality level,<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x119.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x120.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x121.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x122.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x123.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x124.png" xlink:type="simple"/></inline-formula>.</p><p>Having <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x125.png" xlink:type="simple"/></inline-formula> with <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x125.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x126.png" xlink:type="simple"/></inline-formula> samples, the algorithm is evaluated on its convergence capability given an error level (target) of<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x125.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x126.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x127.png" xlink:type="simple"/></inline-formula>. The parents, children and external populations size are set to <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x125.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x126.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x127.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x128.png" xlink:type="simple"/></inline-formula> each. With the intention of explaining the behavior of the algorithm, we present a snapshot at three different generations; at the first generation or<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x125.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x126.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x127.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x128.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x129.png" xlink:type="simple"/></inline-formula>, in the middle or <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x125.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x126.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x127.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x128.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x129.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x130.png" xlink:type="simple"/></inline-formula> and then in the last generation or<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x125.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x126.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x127.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x128.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x129.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x130.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x131.png" xlink:type="simple"/></inline-formula>, which will correspond with the output.</p><p>For the GA parameters, the mutation ratio was set to 0.05% or 5% and the elitism was applied at the replacement stage to all individuals, letting survive only the best fitted individuals, which at the next generation will be considered as the parents pool.</p><p>5.2. SmallCrush: This evaluation is intended to highlight the weakness and strengths of the post-processing. It evaluates a vast group of configurations as shown in <xref ref-type="table" rid="table1">Table 1</xref>. The evaluations are done considering <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x132.png" xlink:type="simple"/></inline-formula> with <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x132.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x133.png" xlink:type="simple"/></inline-formula> samples, an error level (target) of<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x132.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x133.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x134.png" xlink:type="simple"/></inline-formula>. The parents, children and external populations size are set to <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x132.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x133.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x134.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x135.png" xlink:type="simple"/></inline-formula> each. SmallCrush is a battery test that forms part of the statistical package TestU01 [<xref ref-type="bibr" rid="scirp.65372-ref23">23</xref>] . This a modern test package that includes most available test packages, surpassing by flexibility and extension popular ones like DIEHARD [<xref ref-type="bibr" rid="scirp.65372-ref37">37</xref>] and NIST [<xref ref-type="bibr" rid="scirp.65372-ref38">38</xref>] . As a standard, TestU01 uses statistical testing where the test outcome or p-value, fails if it is outside of the interval<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x132.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x133.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x134.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x135.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x136.png" xlink:type="simple"/></inline-formula>. In essence SmallCrush consist of 10 tests: the birthday spacing test [<xref ref-type="bibr" rid="scirp.65372-ref39">39</xref>] , the collision test, the gap test, the simplified poker test, the coupon collector test, the maximum-of-t test [<xref ref-type="bibr" rid="scirp.65372-ref30">30</xref>] , a weight distribution test proposed by Matsumoto and Kurita [<xref ref-type="bibr" rid="scirp.65372-ref40">40</xref>] , the rank of a random binary matrix test [<xref ref-type="bibr" rid="scirp.65372-ref39">39</xref>] , two tests of independence between the Hamming weights of successive blocks of bits [<xref ref-type="bibr" rid="scirp.65372-ref41">41</xref>] , and various tests based on random walk over the set of integers [<xref ref-type="bibr" rid="scirp.65372-ref23">23</xref>] .</p><p>- The Birthday Spacing Test. The birthday spacing test checks the separation between numbers by mapping them to points in a cube. It checks that the number of collisions between their the spacing follows a Poisson distribution.</p><p>- The Collision Test. This test checks for n-dimensional uniformity, by checking the number of collisions per subdivision of the interval <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x137.png" xlink:type="simple"/></inline-formula> is uniformly distributed.</p><p>- The Gap Test. This test checks for the number of times that random number within <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x138.png" xlink:type="simple"/></inline-formula> fall outside of a expected interval. It applies chi-square testing between the observed and expected number of observations.</p><p>- The Simplified Poker Test. This test checks for the number of different integers that are generated, it applies chi-square testing between the observed and expected number of observations.</p><p>- The Coupon Collector Test. This test checks over a group of random number integers for integers without collision, unique numbers, it applies chi-square testing between the observed and expected number of observations among the group of random numbers.</p><p>- The Maximum-of-t Test. This test checks for the number of times that the maximum random number within <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x139.png" xlink:type="simple"/></inline-formula> follows an exponential distribution via chi-square and Anderson-Darling test.</p><p>- The Weight Distribution Test. This test takes a group of uniform distributions; then it computes a binomial distribution and it gets compared via chi-square against the expected distribution.</p><p>- The Rank of a Random Binary Matrix Test. This test generate a binary matrix with uniform random numbers and then it calculates the rank of the matrix, or the number of linearly independent rows. Then, the probability distribution is compared to a known distribution via chi-square.</p><p>- The Independence Test between Hamming Weights of successive blocks. This involves two test that check for independence among Hamming Weights. The first test considers only the most significant bits of random numbers in a block and its corresponding Hamming Weight, then the Hamming Weights are arrange in successive pairs that later are count for the number of possibilities and compared against expected values via a chi-square test. The second test, considers mapping the counting from the first test into a 2-dimensional plane, where it is segmented into 4 blocks that its values are related to an expected value. Therefore, via a chi-square test the observed quantities can be compared to the expected values.</p><p>- The Random Walk Test. This test performs a random walk over integers, having an equal probability to move to right or left during the walk. So a group of statistics and the distribution that its position at the end of the test, both, are compared against their theoretical positions via a chi-square test.</p><table-wrap id="table1" ><label><xref ref-type="table" rid="table1">Table 1</xref></label><caption><title> Small crush test configurations</title></caption><table><tbody><thead><tr><th align="center" valign="middle" >Number of Processors</th><th align="center" valign="middle"  colspan="7"  >Segment Size</th></tr></thead><tr><td align="center" valign="middle" >2</td><td align="center" valign="middle" ></td><td align="center" valign="middle" ></td><td align="center" valign="middle" ></td><td align="center" valign="middle" ></td><td align="center" valign="middle" ></td><td align="center" valign="middle" ></td><td align="center" valign="middle" ></td></tr><tr><td align="center" valign="middle" >4</td><td align="center" valign="middle" >64</td><td align="center" valign="middle" >16384</td><td align="center" valign="middle" >17408</td><td align="center" valign="middle" >32768</td><td align="center" valign="middle" >49152</td><td align="center" valign="middle" >65536</td><td align="center" valign="middle" >1048576</td></tr><tr><td align="center" valign="middle" >8</td><td align="center" valign="middle" ></td><td align="center" valign="middle" ></td><td align="center" valign="middle" ></td><td align="center" valign="middle" ></td><td align="center" valign="middle" ></td><td align="center" valign="middle" ></td><td align="center" valign="middle" ></td></tr></tbody></table></table-wrap></sec><sec id="s6"><title>6. Results</title><p>In this section we present the results according to the evaluation methodology presented in Section 5. The results are presented in the following.</p><p>1. Results from the Characteristics of a GA post-processing stage:</p><p>As observed on <xref ref-type="fig" rid="fig7">Figure 7</xref>, the standard deviation of the power spectral density, or<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x140.png" xlink:type="simple"/></inline-formula>, always tends to decrease as the algorithm goes forward on the generations. This behavior is expected. It is caused by the elitism implementation on Algorithm 1, and in the replacement method in Algorithm 6. The elitism ensures to either decrease or stagnate<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x140.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x141.png" xlink:type="simple"/></inline-formula>, keeping only the best individuals available for the next generation.</p><p>In <xref ref-type="fig" rid="fig7">Figure 7</xref> in a didactic manner, we selected three points to compare the progress on the distribution of the power spectral density. Its respective shape on the autocorrelation and the shape of the probability mass function and the points distribution pattern. In <xref ref-type="fig" rid="fig8">Figure 8</xref> at generation<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x142.png" xlink:type="simple"/></inline-formula>, the random numbers show some traces of periodicity, that can be seen on the peaks with a lag different than 0 on the autocorrelation at <xref ref-type="fig" rid="fig8">Figure 8</xref>(c). This is also shown on the power spectral density, <xref ref-type="fig" rid="fig8">Figure 8</xref>(d), as points that overshoot more than 5.0. These random numbers, at generation 0, are already of an outstanding good quality, <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x142.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x143.png" xlink:type="simple"/></inline-formula>, but as shown in <xref ref-type="fig" rid="fig8">Figure 8</xref>(c) and <xref ref-type="fig" rid="fig8">Figure 8</xref>(d) there is still room for improvement. Nevertheless, due to the fact that we only manipulate the order and not the magnitudes of those numbers, the probability mass function remains uniform across all generations.</p><p>In <xref ref-type="fig" rid="fig9">Figure 9</xref>(d) at generation<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x144.png" xlink:type="simple"/></inline-formula>, the overshoots on the power spectral density converge to less than 5.0, still with traces of periodicity on the autocorrelation, in <xref ref-type="fig" rid="fig9">Figure 9</xref>(c), but closer to the solution. At this</p><fig id="fig7"  position="float"><label><xref ref-type="fig" rid="fig7">Figure 7</xref></label><caption><title> Standard deviation of the Power spectral density plotted against the change on generations</title></caption><graphic mimetype="image"   position="float"  xlink:type="simple"  xlink:href="http://html.scirp.org/file/7-1730326x145.png"/></fig><fig id="fig8"  position="float"><label><xref ref-type="fig" rid="fig8">Figure 8</xref></label><caption><title> (a) Random numbers at generation 0; (b) its probability mass function; (c) the autocorrelation; (d) the power spectral density</title></caption><graphic mimetype="image"   position="float"  xlink:type="simple"  xlink:href="http://html.scirp.org/file/7-1730326x146.png"/></fig><fig id="fig9"  position="float"><label><xref ref-type="fig" rid="fig9">Figure 9</xref></label><caption><title> (a) Random numbers at generation 300; (b) its probability mass function; (c) the autocorrelation; (d) the power spectral density</title></caption><graphic mimetype="image"   position="float"  xlink:type="simple"  xlink:href="http://html.scirp.org/file/7-1730326x147.png"/></fig><p>generation with<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x148.png" xlink:type="simple"/></inline-formula>, the distribution pattern of the points in <xref ref-type="fig" rid="fig9">Figure 9</xref>(a) is sparser than the one in <xref ref-type="fig" rid="fig8">Figure 8</xref>(a).</p><p>The algorithm converges until generation<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x149.png" xlink:type="simple"/></inline-formula>, where the power spectral density is concentrated in its majority below 3.0 with a<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x149.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x150.png" xlink:type="simple"/></inline-formula>, this can be reviewed on <xref ref-type="fig" rid="fig1">Figure 1</xref>0(d). As well, the improve-</p><p>ment on the power spectral density is reflected on the autocorrelation as closer appearance of an impulse shape, <xref ref-type="fig" rid="fig1">Figure 1</xref>0(c). But the overall benefit of the algorithm can be observed on <xref ref-type="fig" rid="fig1">Figure 1</xref>0(a), where the points are spread covering the majority of the space, with a less visible agglomerates or darker spots as in <xref ref-type="fig" rid="fig9">Figure 9</xref>(a) and <xref ref-type="fig" rid="fig8">Figure 8</xref>(a).</p><p>As we have reviewed, the underlining idea of the Algorithm 1 is to benefit from the interactions of the pools of parents, children, and externals. To review in more detail these interactions, we look at the effects of those distribution in the following two examples.</p><p>It is well known, that one of the major drawbacks of elitism is the reduction of genetic content over the population which perpetuates the stagnation of the fitness function. But as well, elitism is characterized for a smooth fitness function. So in order to compensate for the lack of genetic content the external pool is introduced. In <xref ref-type="fig" rid="fig1">Figure 1</xref>1 over an example, we can observe the distributions of the children pool scores overlapping the external pool scores in its majority. At each iteration, the minimum among the two distribution is selected as the best, as it is described on Algorithm 6. Here, the external pool becomes another set of points over the solution space, uniformly distributed, meanwhile the children pool is distributed nearby the parents distribution, since it keeps traces of the permutation orders, described on Algorithm 2, Algorithm 4, and Algorithm 5.</p><p>In contrary to the example on <xref ref-type="fig" rid="fig1">Figure 1</xref>1, we also present in another example, <xref ref-type="fig" rid="fig1">Figure 1</xref>2, the effects of the</p><fig id="fig10"  position="float"><label><xref ref-type="fig" rid="fig1">Figure 1</xref>0</label><caption><title> (a) Random numbers at generation 4779992, (b) its probability mass function, (c) the autocorrelation, (d) the power spectral density</title></caption><graphic mimetype="image"   position="float"  xlink:type="simple"  xlink:href="http://html.scirp.org/file/7-1730326x151.png"/></fig><fig id="fig11"  position="float"><label><xref ref-type="fig" rid="fig1">Figure 1</xref>1</label><caption><title> Standard deviation of the Power spectral density from the parents, children and external pool plotted against the change on generations</title></caption><graphic mimetype="image"   position="float"  xlink:type="simple"  xlink:href="http://html.scirp.org/file/7-1730326x152.png"/></fig><fig id="fig12"  position="float"><label><xref ref-type="fig" rid="fig1">Figure 1</xref>2</label><caption><title> Standard deviation of the Power spectral density from the parents and children pool without external pool plotted against the change on generations</title></caption><graphic mimetype="image"   position="float"  xlink:type="simple"  xlink:href="http://html.scirp.org/file/7-1730326x153.png"/></fig><p>lack of an external pool. Here, the fitness function tends to stagnate for longer periods and also is noted that children will not impact <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x154.png" xlink:type="simple"/></inline-formula> as much as the case of <xref ref-type="fig" rid="fig1">Figure 1</xref>1, since the sample of the solution space is smaller. Consequently, this evolves a lack of genetic diversity and the proliferation of dominant traits on the children observed along different generations as stagnation.</p><p>Balancing between the two factors is beyond the scope of this paper, but a good inside on which variables contribute to modifying the fitness curve are the pool size and the children to external pool ratio.</p><p>2. Results from SmallCrush Test</p><p>In order to make easier the review of the results, given that there are 10 SmallCrush evaluations with the 3 different configurations on the numbers of processors and 7 different segment sizes, we present a coded color map highlighting the p-value in Figures 13-15. In a SmallCrush test, the test is passed only if all the 10 evaluations have a p-value within the range of<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x155.png" xlink:type="simple"/></inline-formula>.</p><p>The first configuration is using 2 processors, where the coded color results are presented at different segment sizes. in <xref ref-type="fig" rid="fig1">Figure 1</xref>3. The evaluation of SmallCrush in this configuration is close to pass the battery test but it fails only in a test, either Maximum-of-t test or the Random Walks. Independently of this, the battery test successfully passes all the tests when the segment size is 17408.</p><p>The second configuration is using 4 processors and the results are presented in <xref ref-type="fig" rid="fig1">Figure 1</xref>4. In this configura- tion, all the test failed either at Maximum-of-t or the Random Walks, in a similar ways as in <xref ref-type="fig" rid="fig1">Figure 1</xref>3. The results tend to fail exclusively on one the test only. But the only evaluation at which the failing test is close to passing is when the segment size is 17,408.</p><p>The third configurations uses only 8 processors, the results are shown in <xref ref-type="fig" rid="fig1">Figure 1</xref>5. In a similar manner, the failed evaluations are exclusive of each other, between Maximum-of-t and Random Walks. But the only evaluation that passes has a segment size of 17,408.</p><p>Recapitulating the overall SmallCrush tests, the segment size plays a key role on the quality of the tests results. As well, only Maximum-of-t and Random Walks fail among different segment sizes and configurations with different number of processors. The Maximum-of-t test focus on extracting the maximum of a sample set of random values, while the maximums follow an exponential distribution. Therefore, failing Maximum-of-t is due to inherit statistical properties of nearly i.i.d. uniform distributions. This improves at certain segment sizes, cause it aligns with the sample set size of the Maximum-of-t test. The Random Walks rely on the properties found on Markov chains, where the probability of the current position depends on the previous, This means that failing Random Walks is due to a lack of consistency among continuous segments. This evaluation passes when the segment size fits the sampling size used over the random walk so this connecting property is satisfied.</p><fig id="fig13"  position="float"><label><xref ref-type="fig" rid="fig1">Figure 1</xref>3</label><caption><title> SmallCrush results from TestU01 battery test using 2 processors</title></caption><graphic mimetype="image"   position="float"  xlink:type="simple"  xlink:href="http://html.scirp.org/file/7-1730326x156.png"/></fig><fig id="fig14"  position="float"><label><xref ref-type="fig" rid="fig1">Figure 1</xref>4</label><caption><title> SmallCrush results from TestU01 battery test using 4 processors</title></caption><graphic mimetype="image"   position="float"  xlink:type="simple"  xlink:href="http://html.scirp.org/file/7-1730326x157.png"/></fig><fig id="fig15"  position="float"><label><xref ref-type="fig" rid="fig1">Figure 1</xref>5</label><caption><title> SmallCrush results from TestU01 battery test using 8 processors</title></caption><graphic mimetype="image"   position="float"  xlink:type="simple"  xlink:href="http://html.scirp.org/file/7-1730326x158.png"/></fig><p>So far, the segment size of 17,408 random numbers is one sub-optimal solution for centering the evaluations, it is almost independent of the number of processors. This condition seems to remain constant as the number of processors is increased, since passing the test is connected to the consistency of <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x159.png" xlink:type="simple"/></inline-formula> among segments which is aided by increasing the sampling size. This is benefited by the parallelism exposed on GA as in the Algorithm 1.</p></sec><sec id="s7"><title>7. Conclusion</title><p>The use of a post-procesing stage for TRNGs using GA inteded for seed generation proves to satisfy the specified quality level within a desirable number of generations. We have presented the theoretical foundations that guarantee the algorithm convergence to a nearby point of<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/7-1730326x160.png" xlink:type="simple"/></inline-formula>, as well as, the analysis of a GA approach aided to avoid stagnation and its respective complexity and performance justification. In addition, guidelines have been presented showing the influence different parameters that connect the statistical properties among the random numbers and the task decomposition from the post-processing algorithm. From this parameters, we observed that the segment size in the post-processing is key for centering the quality of the random numbers. For future work, we will extend the research towards meta-heuristics that target statistical properties connecting segments of random numbers.</p></sec><sec id="s8"><title>Cite this paper</title><p>Jose J. Mijares Chan,Parimala Thulasiraman,Gabriel Thomas,Ruppa Thulasiram, (2016) Ensuring Quality of Random Numbers from TRNG: Design and Evaluation of Post-Processing Using Genetic Algorithm. Journal of Computer and Communications,04,73-92. doi: 10.4236/jcc.2016.44007</p></sec></body><back><ref-list><title>References</title><ref id="scirp.65372-ref1"><label>1</label><mixed-citation publication-type="other" xlink:type="simple">Sumter, L. (2010) Cloud Computing: Security Risk. Proceedings of the ACM 48th Annual Southeast Regional Conference, Oxford, MS, 15-17 April 2010, 112:1-112:4.</mixed-citation></ref><ref id="scirp.65372-ref2"><label>2</label><mixed-citation publication-type="other" xlink:type="simple">Mowbray, M. and Pearson, S. (2009) A Client-Based Privacy Manager for Cloud Computing. Proceedings of the ACM 4th International ICST Conference on Communication System Software and Middleware, Dublin, 15-19 June 2009, 5. http://dx.doi.org/10.1145/1621890.1621897</mixed-citation></ref><ref id="scirp.65372-ref3"><label>3</label><mixed-citation publication-type="other" xlink:type="simple">Lin, D. and Squicciarini, A. (2010) Data Protection Models for Service Provisioning in the Cloud. Proceedings of the 15th ACM Symposium on Access Control Models and Technologies, Pittsburgh, 9-11 June, 183-192. http://dx.doi.org/10.1145/1809842.1809872</mixed-citation></ref><ref id="scirp.65372-ref4"><label>4</label><mixed-citation publication-type="other" xlink:type="simple">Lombardi, F. and Di Pietro, R. (2010) Transparent Security for Cloud. Proceedings of the ACM Symposium on Applied Computing, Sierre, 22-26 March 2010, 414-415. http://dx.doi.org/10.1145/1774088.1774176</mixed-citation></ref><ref id="scirp.65372-ref5"><label>5</label><mixed-citation publication-type="other" xlink:type="simple">Bleikertz, S., Schunter, M., Probst, C.W., Pendarakis, D. and Eriksson, K. (2010) Security Audits of Multi-Tier Virtual Infrastructures in Public Infrastructure Clouds. Proceedings of the 2010 ACM Workshop on Cloud Computing Security Workshop, Chicago, 4-8 October 2010, 93-102.</mixed-citation></ref><ref id="scirp.65372-ref6"><label>6</label><mixed-citation publication-type="other" xlink:type="simple">Kerrigan, B. and Chen, Y. (2012) A Study of Entropy Sources in Cloud Computers: Random Number Generation on Cloud Hosts. Springer, St. Petersburg.</mixed-citation></ref><ref id="scirp.65372-ref7"><label>7</label><mixed-citation publication-type="other" xlink:type="simple">Vuillemin, T., Goichon, F., Lauradoux, C. and Salagnac, G. (2012) Entropy Transfers in the Linux Random Number Generator. Technical Report, Research Report 8060, INRIA, Montbonnot-Saint-Martin.</mixed-citation></ref><ref id="scirp.65372-ref8"><label>8</label><mixed-citation publication-type="other" xlink:type="simple">Almorsy, M., Grundy, J. and Müller, I. (2010) An Analysis of the Cloud Computing Security Problem. Proceedings of APSEC 2010 Cloud Workshop, Sydney, 30 November 2010, 6 p.</mixed-citation></ref><ref id="scirp.65372-ref9"><label>9</label><mixed-citation publication-type="other" xlink:type="simple">Grobauer, B., Walloschek, T. and Stocker, E. (2011) Understanding Cloud Computing Vulnerabilities. IEEE Security &amp; Privacy, 9, 50-57.</mixed-citation></ref><ref id="scirp.65372-ref10"><label>10</label><mixed-citation publication-type="other" xlink:type="simple">Rukhin, A., Soto, J., Nechvatal, J., Barker, E., Leigh, S., Levenson, M., Banks, D., Heckert, A., Dray, J., Vo, S., Rukhin, A., Soto, J., Smid, M., Leigh, S., Vangel, M., Heckert, A., Dray, J. and Bassham Iii, L.E. (2010) Statistical Test Suite for Random and Pseudo Random Number Generators for Cryptographic Applications. NIST Special Publication, Gaithersburg.</mixed-citation></ref><ref id="scirp.65372-ref11"><label>11</label><mixed-citation publication-type="other" xlink:type="simple">Barker, E. and Kelsey, J. (2012) NIST DRAFT Special Publication 800-90b Recommendation for the Entropy Sources Used for Random Bit Generation. NIST Special Publications, Gaithersburg. http://csrc.nist.gov/publications/drafts/800-90/draft-sp800-90b.pdf</mixed-citation></ref><ref id="scirp.65372-ref12"><label>12</label><mixed-citation publication-type="other" xlink:type="simple">Easter, R.J., French, C. and Gallagher, P. (2012) Annex c: Approved Random Number Generators for _ps pub 140-2, Security Requirements for Cryptographic Modules. NIST, Gaithersburg, February.</mixed-citation></ref><ref id="scirp.65372-ref13"><label>13</label><mixed-citation publication-type="other" xlink:type="simple">Lecuyer, P. (2012) Random Number Generation. Springer. http://dx.doi.org/10.1007/978-3-642-21551-3_3</mixed-citation></ref><ref id="scirp.65372-ref14"><label>14</label><mixed-citation publication-type="other" xlink:type="simple">Bucci, M., Germani, L., Luzzi, R., Trifiletti, A. and Varanonuovo, M. (2003) A High-Speed Oscillator-Based Truly Random Number Source for Cryptographic Applications on a Smart Card IC. IEEE Transactions on Computers, 52, 403-409.</mixed-citation></ref><ref id="scirp.65372-ref15"><label>15</label><mixed-citation publication-type="other" xlink:type="simple">Colesa, A., Tudoran, R. and Banescu, S. (2008) Software Random Number Generation Based on Race Conditions. IEEE 10th International Symposium on Symbolic and Numeric Algorithms for Scientific Computing, Timisoara, 26-29 September 2008, 439-444. http://dx.doi.org/10.1109/synasc.2008.36</mixed-citation></ref><ref id="scirp.65372-ref16"><label>16</label><mixed-citation publication-type="other" xlink:type="simple">Fischer, V. and Drutarovsky, M. (2003) True Random Number Generator Embedded in Reconfigurable Hardware. Cryptographic Hardware and Embedded Systems-CHES 2002, Springer, 415-430.</mixed-citation></ref><ref id="scirp.65372-ref17"><label>17</label><mixed-citation publication-type="other" xlink:type="simple">Epstein, M., Hars, L., Krasinski, R., Rosner, M. and Zheng, H. (2003) Design and Implementation of a True Random Number Generator Based on Digital Circuit Artifacts. Cryptographic Hardware and Embedded Systems-CHES 2003, Springer, 152-165. http://dx.doi.org/10.1007/978-3-540-45238-6_13</mixed-citation></ref><ref id="scirp.65372-ref18"><label>18</label><mixed-citation publication-type="other" xlink:type="simple">Chen, I.-T. (2013) Random Numbers Generated from Audio and Video Sources. Mathematical Problems in Engineering.</mixed-citation></ref><ref id="scirp.65372-ref19"><label>19</label><mixed-citation publication-type="other" xlink:type="simple">Jun, B. and Kocher, P. (1999) The Intel Random Number Generator. Cryptography Research Inc. White Paper, San Francisco.</mixed-citation></ref><ref id="scirp.65372-ref20"><label>20</label><mixed-citation publication-type="other" xlink:type="simple">Hamburg, M., Kocher, P. and Marson, M.E. (2012) Analysis of Intels Ivy Bridge Digital Random Number Generator. http://www.cryptography.com/public/pdf/IntelTRNGReport20120312.pdf</mixed-citation></ref><ref id="scirp.65372-ref21"><label>21</label><mixed-citation publication-type="other" xlink:type="simple">Chan, J.J.M., Sharma, B., Lv, J., Thomas, G., Thulasiram, R. and Thulasiraman, P. (2011) True Random Number Generator Using GPUs and Histogram Equalization Techniques. IEEE 13th International Conference on High Performance Computing and Communications, Banff, AB, 2-4 September 2011, 161-170.</mixed-citation></ref><ref id="scirp.65372-ref22"><label>22</label><mixed-citation publication-type="other" xlink:type="simple">Chan, J.J.M., Thulasiraman, P., Thomas, G. and Thulasiram, R. (2015) Stationarity Enforcement of Accelerator Based TRNG by Genetic Algorithm. IEEE Trustcom/BigDataSE/ISPA, Helsinki, 20-22 August 2015, Volume 1, 1122-1128.</mixed-citation></ref><ref id="scirp.65372-ref23"><label>23</label><mixed-citation publication-type="other" xlink:type="simple">L’Ecuyer, P. and Simard, R. (2007) Testu01: A Software Library in ANSI C for Empirical Testing of Random Number Generators. Software User’s Guide. http://www.iro.umontreal.ca/~lecuyer</mixed-citation></ref><ref id="scirp.65372-ref24"><label>24</label><mixed-citation publication-type="other" xlink:type="simple">Gentle, J.E. (2006) Random Number Generation and Monte Carlo Methods. Springer Science &amp; Business Media, New York.</mixed-citation></ref><ref id="scirp.65372-ref25"><label>25</label><mixed-citation publication-type="other" xlink:type="simple">Knuth, D.E. (2011) Art of Computer Programming, Volumes 1-4A Boxed Set. 3rd Edition, Addison-Wesley Professional, Massachusetts.</mixed-citation></ref><ref id="scirp.65372-ref26"><label>26</label><mixed-citation publication-type="journal" xlink:type="simple"><name name-style="western"><surname>Niederreiter</surname><given-names> H. </given-names></name>,<etal>et al</etal>. (<year>1991</year>)<article-title>Recent Trends in Random Number and Random Vector Generation</article-title><source> Annals of Operations Research</source><volume> 31</volume>,<fpage> 323</fpage>-<lpage>345</lpage>.<pub-id pub-id-type="doi"></pub-id></mixed-citation></ref><ref id="scirp.65372-ref27"><label>27</label><mixed-citation publication-type="other" xlink:type="simple">Box, G.E.P., Jenkins, G.M. and Reinsel, G.C. (2011) Time Series Analysis: Forecasting and Control, Volume 734. John Wiley &amp; Sons, Hoboken.</mixed-citation></ref><ref id="scirp.65372-ref28"><label>28</label><mixed-citation publication-type="other" xlink:type="simple">Proakis, J.G. (2007) Digital Signal Processing: Principles, Algorithms, and Applications, 4/E. Pearson Education, Boston.</mixed-citation></ref><ref id="scirp.65372-ref29"><label>29</label><mixed-citation publication-type="journal" xlink:type="simple"><name name-style="western"><surname>Welford</surname><given-names> B.P. </given-names></name>,<etal>et al</etal>. (<year>1962</year>)<article-title>Note on a Method for Calculating Corrected Sums of Squares and Products</article-title><source> Technometrics</source><volume> 4</volume>,<fpage> 419</fpage>-<lpage>420</lpage>.<pub-id pub-id-type="doi"></pub-id></mixed-citation></ref><ref id="scirp.65372-ref30"><label>30</label><mixed-citation publication-type="other" xlink:type="simple">Knuth, D. (1997) The Art of Computer Programming. Volume 2: Semi Numerical Algorithms. Addison-Wesley Publishing Company, Reading, Massachusetts.</mixed-citation></ref><ref id="scirp.65372-ref31"><label>31</label><mixed-citation publication-type="other" xlink:type="simple">Augustin, W., Heuveline, V. and Weiss, J.-P. (2009) Optimized Stencil Computation Using In-Place Calculation on Modern Multicore Systems. Euro-Par 2009 Parallel Processing, Lecture Notes in Computer Science, Volume 5704 Springer Berlin Heidelberg, 772-784.</mixed-citation></ref><ref id="scirp.65372-ref32"><label>32</label><mixed-citation publication-type="other" xlink:type="simple">Prabahan Basu, Daniel Rudoy, and Patrick J Wolfe. A non-parametric test for stationarity based on local Fourier analysis. IEEE International Conference on Acoustics, Speech and Signal Processing, Taipei, 19-24 April 2009, 3005-3008.</mixed-citation></ref><ref id="scirp.65372-ref33"><label>33</label><mixed-citation publication-type="other" xlink:type="simple">Killmann, W. and Schindler, W. (2001) AIS 31: Functionality Classes and Evaluation Methodology for True (Physical) Random Number Generators, Version 3.1. Bundesamt fur Sicherheit in der Informationstechnik (BSI), Bonn.</mixed-citation></ref><ref id="scirp.65372-ref34"><label>34</label><mixed-citation publication-type="other" xlink:type="simple">Hofemeier, G. (2012) Intel Digital Random Number Generator (DRNG) Software Implementation Guide.</mixed-citation></ref><ref id="scirp.65372-ref35"><label>35</label><mixed-citation publication-type="other" xlink:type="simple">Ahn, C.W. and Ramakrishna, R.S. (2003) Elitism-Based Compact Genetic Algorithms. IEEE Transactions on Evolutionary Computation, 7, 367-385.</mixed-citation></ref><ref id="scirp.65372-ref36"><label>36</label><mixed-citation publication-type="other" xlink:type="simple">Reed, P.M., Minsker, B.S. and Goldberg, D.E. (2001) The Practitioners Role in Competent Search and Optimization Using Genetic Algorithms. Bridging the Gap, 10, 97.</mixed-citation></ref><ref id="scirp.65372-ref37"><label>37</label><mixed-citation publication-type="other" xlink:type="simple">Marsaglia, G. (1996) Diehard: A Battery of Tests of Randomness. http://stat.fsu.edu/pub/diehard/</mixed-citation></ref><ref id="scirp.65372-ref38"><label>38</label><mixed-citation publication-type="journal" xlink:type="simple"><name name-style="western"><surname>Ruhkin</surname><given-names> A.L. </given-names></name>,<etal>et al</etal>. (<year>2001</year>)<article-title>Testing Randomness: A Suite of Statistical Procedures</article-title><source> Theory of Probability &amp; Its Applications</source><volume> 45</volume>,<fpage> 111</fpage>-<lpage>132</lpage>.<pub-id pub-id-type="doi"></pub-id></mixed-citation></ref><ref id="scirp.65372-ref39"><label>39</label><mixed-citation publication-type="other" xlink:type="simple">Marsaglia, G. (1985) A Current View of Random Number Generators. In: Computer Science and Statistics, Sixteenth Symposium on the Interface, Elsevier Science Publishers, North-Holland, Amsterdam, 3-10.</mixed-citation></ref><ref id="scirp.65372-ref40"><label>40</label><mixed-citation publication-type="other" xlink:type="simple">Matsumoto, M. and Kurita, Y. (1994) Twisted GFSR Generators II. ACM Transactions on Modelling and Computer Simulation (TOMACS), 4, 254-266.</mixed-citation></ref><ref id="scirp.65372-ref41"><label>41</label><mixed-citation publication-type="other" xlink:type="simple">L’ecuyer, P. and Simard, R. (1999) Beware of Linear Congruential Generators with Multipliers of the Form a = ±2q ± 2r. ACM Transactions on Mathematical Software (TOMS), 25, 367-374.</mixed-citation></ref></ref-list></back></article>