<?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">JSIP</journal-id><journal-title-group><journal-title>Journal of Signal and Information Processing</journal-title></journal-title-group><issn pub-type="epub">2159-4465</issn><publisher><publisher-name>Scientific Research Publishing</publisher-name></publisher></journal-meta><article-meta><article-id pub-id-type="doi">10.4236/jsip.2021.121001</article-id><article-id pub-id-type="publisher-id">JSIP-107532</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>
 
 
  A New Approach for the DFT NIST Test Applicable for Non-Stationary Input Sequences
 
</article-title></title-group><contrib-group><contrib contrib-type="author" xlink:type="simple"><name name-style="western"><surname>Yehonatan</surname><given-names>Avraham</given-names></name><xref ref-type="aff" rid="aff1"><sup>1</sup></xref><xref ref-type="corresp" rid="cor1"><sup>*</sup></xref></contrib><contrib contrib-type="author" xlink:type="simple"><name name-style="western"><surname>Monika</surname><given-names>Pinchas</given-names></name><xref ref-type="aff" rid="aff1"><sup>1</sup></xref><xref ref-type="corresp" rid="cor1"><sup>*</sup></xref></contrib></contrib-group><aff id="aff1"><addr-line>Department of Electrical and Electronic Engineering, Ariel University, Ariel, Israel</addr-line></aff><pub-date pub-type="epub"><day>26</day><month>02</month><year>2021</year></pub-date><volume>12</volume><issue>01</issue><fpage>1</fpage><lpage>41</lpage><history><date date-type="received"><day>1,</day>	<month>November</month>	<year>2020</year></date><date date-type="rev-recd"><day>23,</day>	<month>February</month>	<year>2021</year>	</date><date date-type="accepted"><day>26,</day>	<month>February</month>	<year>2021</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>
 
 
  The National Institute of Standards and Technology (NIST) document is a list of fifteen tests for estimating the probability of signal randomness degree. 
  Test number six in the NIST document is the Discrete Fourier Transform
   (DFT) test suitable for stationary incoming sequences. But, for cases where the input sequence is not stationary, the DFT test provides inaccurate results. For these cases, test number seven and eight (the Non-overlapping Template Matching Test and the Overlapping Template Matching Test) of the NIST document were designed to classify those non-stationary sequences. But, even with test number seven and eight of the NIST document, the results are not always accurate. Thus, the NIST test does not give a proper answer for the non-stationary input sequence case. In this paper, we offer a new algorithm 
  or test, which may replace the NIST tests number six, seven and eight. The 
  proposed test is applicable also for non-stationary sequences and supplies
   more 
  accurate results than the existing tests (NIST tests number six, seven and
   eight), for non-stationary sequences. The new proposed test is based on the Wigner function and on the Generalized Gaussian Distribution (GGD). In addition, 
  this new proposed algorithm alarms and indicates on suspicious places of
   cyclic 
  sections in the tested sequence. Thus, it gives us the option to repair or to
   remove the suspicious places of cyclic sections
  <b> </b>
  (this part is beyond the scope of this paper), so that after that, the repaired or the shortened sequence (original sequence with removed sections) will result as a sequence with high probability of random degree.
 
</p></abstract><kwd-group><kwd>Wigner Distribution</kwd><kwd> Shape Parameter</kwd><kwd> Generalized Gaussian Distribution</kwd><kwd> Random Number Generator</kwd><kwd> True Random Number Generator</kwd><kwd> Pseudo Random Number Generator</kwd></kwd-group></article-meta></front><body><sec id="s1"><title>1. Introduction</title><p>In this paper, the problem of estimating the probability of signal randomness degree is addressed, which is widespread used in cryptography applications [<xref ref-type="bibr" rid="scirp.107532-ref1">1</xref>] [<xref ref-type="bibr" rid="scirp.107532-ref2">2</xref>]. The key component of the encryption process is the Random Number Generator (RNG) [<xref ref-type="bibr" rid="scirp.107532-ref3">3</xref>] [<xref ref-type="bibr" rid="scirp.107532-ref4">4</xref>], that is a physical apparatus or a software algorithm, that generates a sequence of signs (numbers) without any visible deterministic pattern or order. A True Random Number Generator (TRNG) is an apparatus that is based on a non-deterministic entropy source while a Pseudo Random Number Generator (PRNG) is based on software or hardware [<xref ref-type="bibr" rid="scirp.107532-ref5">5</xref>]. The quality of an RNG is not always perfect due to the fact that physical generators (TRNG) are sensitive to external influences [<xref ref-type="bibr" rid="scirp.107532-ref6">6</xref>] such as temperature [<xref ref-type="bibr" rid="scirp.107532-ref7">7</xref>], power supply, obsolescence, may suffer from a slow and persistent failure that is not noticeable or may suffer from a sharp decline in quality [<xref ref-type="bibr" rid="scirp.107532-ref8">8</xref>]. In addition, generators based on software (PRNG) are defective since they are based on deterministic algorithms that generate the numbers by some formula and some initial value [<xref ref-type="bibr" rid="scirp.107532-ref9">9</xref>] [<xref ref-type="bibr" rid="scirp.107532-ref10">10</xref>].</p><p>The series obtained from the RNG should be checked if this is not a lacking random series [<xref ref-type="bibr" rid="scirp.107532-ref11">11</xref>]. There is a great variety of statistical tests for checking the quality of a random generator [<xref ref-type="bibr" rid="scirp.107532-ref12">12</xref>] [<xref ref-type="bibr" rid="scirp.107532-ref13">13</xref>] [<xref ref-type="bibr" rid="scirp.107532-ref14">14</xref>]. These tests are not meant to prove mathematically that the sequence that the generator produces is random, but rather to find out if there are any vulnerabilities in the generator that may indicate poor randomness [<xref ref-type="bibr" rid="scirp.107532-ref15">15</xref>]. The tests on the input sequence (a sequence of bits of ones and zeros), determine whether the tested sequence contains certain predictable characteristics in a truly random sequence. Such a test result is not deterministic but probabilistic. For example, a truly random sequence should contain zero and one bits approximately equally [<xref ref-type="bibr" rid="scirp.107532-ref14">14</xref>]. If the tested sequence does not meet this requirement, the generator that created the sequence fails experimentally. Conversely, if the one-bit number and zero equals a certain predetermined divergence rate, it can be said that the random sequence was “accepted”. The term was “accepted” means that the claim of randomness is not rejected [<xref ref-type="bibr" rid="scirp.107532-ref16">16</xref>]. Even if the sequence successfully undergoes a given statistical test, it is not an absolute proof of its randomness but more than a probabilistic confirmation [<xref ref-type="bibr" rid="scirp.107532-ref17">17</xref>].</p><p>The NIST tests [<xref ref-type="bibr" rid="scirp.107532-ref18">18</xref>] are very popular [<xref ref-type="bibr" rid="scirp.107532-ref19">19</xref>] [<xref ref-type="bibr" rid="scirp.107532-ref20">20</xref>]. However, these tests (NIST) have several problems [<xref ref-type="bibr" rid="scirp.107532-ref21">21</xref>] [<xref ref-type="bibr" rid="scirp.107532-ref22">22</xref>] [<xref ref-type="bibr" rid="scirp.107532-ref23">23</xref>] [<xref ref-type="bibr" rid="scirp.107532-ref24">24</xref>] and as stated in [<xref ref-type="bibr" rid="scirp.107532-ref25">25</xref>], the NIST tests [<xref ref-type="bibr" rid="scirp.107532-ref18">18</xref>] require that the behavior of the tested sequence shall be stationary. But, according to [<xref ref-type="bibr" rid="scirp.107532-ref25">25</xref>], it is not rare for entropy sources (TRNGs) to generate time-varying data, since entropy sources usually depend on physical phenomena (e.g. thermal noise) and some of them are fragile and sensitive to external factors (e.g. temperature), which means the distribution of their outputs or the dependency among the outputs may change with external factors. In addition, much software based TRNGs use the computer’s workload as their entropy sources, which are also variable [<xref ref-type="bibr" rid="scirp.107532-ref25">25</xref>].</p><p>The NIST tests [<xref ref-type="bibr" rid="scirp.107532-ref18">18</xref>] contain fifteen tests, based on probabilistic methods that examine the statistical independency between the bits in the tested input sequence. The result is a probability value for the “degree of randomness”. This value is called “P value” [<xref ref-type="bibr" rid="scirp.107532-ref18">18</xref>].</p><p>In this paper, we deal with non-stationary sequences for which test number six (the DFT test from the NIST document [<xref ref-type="bibr" rid="scirp.107532-ref18">18</xref>] ) is not suitable. Although the non-overlapping template matching test and the overlapping template matching test (test number seven and eight of the NIST document [<xref ref-type="bibr" rid="scirp.107532-ref18">18</xref>] ) are designed to compensated for the inability of the DFT test to test non-stationary input sequences, still, inaccurate results are obtained for the non-stationary input sequence case. Thus, the NIST tests [<xref ref-type="bibr" rid="scirp.107532-ref18">18</xref>], do not supply satisfying results for non- stationary input sequences.</p><p>The various tests from NIST [<xref ref-type="bibr" rid="scirp.107532-ref18">18</xref>] supply us a probabilistic confirmation that the tested sequence is random. But it does not give us the location of the periodic part that turns the whole sequence to be non-random. Thus, in cases where the tested sequence failed to be random, the whole sequence is disqualified even if only a short part of it, caused it.</p><p>In this paper, we propose a time-frequency approach, that analysis the input sequence in the frequency and time domain in parallel, by using innovative functions such as the Wigner Distribution [<xref ref-type="bibr" rid="scirp.107532-ref26">26</xref>] [<xref ref-type="bibr" rid="scirp.107532-ref27">27</xref>] and the GGD [<xref ref-type="bibr" rid="scirp.107532-ref28">28</xref>] [<xref ref-type="bibr" rid="scirp.107532-ref29">29</xref>]. This new approach solves two open issues:</p><p>1) For the first time, the ability to test non-stationary sequences is possible.</p><p>2) For the first time, it is possible to locate the periodic section in the tested input sequence.</p><p>This approach offers a test that can replace the DFT test in the NIST document [<xref ref-type="bibr" rid="scirp.107532-ref18">18</xref>] and also may be a replacement for test number seven and eight from the NIST tests [<xref ref-type="bibr" rid="scirp.107532-ref18">18</xref>]. The proposed algorithm (test) also finds the location of the periodic part in the tested sequence if it is present. Thus, the periodic part can be cut out from the tested sequence or it can be maybe corrected. Obviously, the corrected and shortened sequences have to be tested again for randomness. The whole issue of how correcting the sequence will not be discussed in this paper. Simulation results will confirm the effectiveness of the proposed approach for non-stationary sequences compared to tests six, seven and eight from the NIST tests [<xref ref-type="bibr" rid="scirp.107532-ref18">18</xref>].</p><p>This paper is organized as follows. In Section 2, we explain the motivation of using the Wigner function in estimating the probability of signal randomness degree. In Section 3, we present the various parameters used for the Wigner test which will be shown in Section 4 to be part of the whole proposed algorithm. In Section 4, we present the structure of the whole algorithm, by using both the Wigner and the GGD functions. In Section 5, we test our new proposed algorithm via simulation and compare the results to those obtained from the NIST (test six, seven and eight [<xref ref-type="bibr" rid="scirp.107532-ref18">18</xref>] ). Finally, the conclusion is given in Section 6.</p></sec><sec id="s2"><title>2. Motivation</title><p>The Wigner function [<xref ref-type="bibr" rid="scirp.107532-ref27">27</xref>] is the Fourier transform for the Autocorrelation function which allows us to get the spectrum as a function of time. In this way we can track the locations of cyclic parts in the tested sequence, by detecting frequency deviations at certain time points. The result of the Wigner function [<xref ref-type="bibr" rid="scirp.107532-ref27">27</xref>] is a matrix, where the lines represent the time domain, the columns represent the frequency domain.</p><p>The absolute output values from the Wigner function [<xref ref-type="bibr" rid="scirp.107532-ref27">27</xref>] can be shown in a 3-D image which shows the tested signal passed via the Wigner function [<xref ref-type="bibr" rid="scirp.107532-ref27">27</xref>] as a function of frequency and time. In <xref ref-type="fig" rid="fig1">Figure 1</xref>, the absolute output values from the Wigner function [<xref ref-type="bibr" rid="scirp.107532-ref27">27</xref>] are shown in a 3-D image, where the input signal to the Wigner function [<xref ref-type="bibr" rid="scirp.107532-ref27">27</xref>] is a cosine signal with a frequency of 10 [MHz]. Please note, that in the time domain the signal at the specified frequency of 10 [MHz] is present throughout the time being tested, while in the frequency domain it has a single frequency. <xref ref-type="fig" rid="fig2">Figure 2</xref> shows the absolute output values from the Wigner function [<xref ref-type="bibr" rid="scirp.107532-ref27">27</xref>] in a 3-D image, where the input signal to the Wigner function [<xref ref-type="bibr" rid="scirp.107532-ref27">27</xref>] is a combination of three cosine signals with frequencies of 3, 7 and 10 [MHz]. Please note that according to <xref ref-type="fig" rid="fig2">Figure 2</xref> we have more than only three frequencies due to the cross-correlation effect between the input frequencies. Thus, for signals containing multiple frequencies, the Wigner function [<xref ref-type="bibr" rid="scirp.107532-ref27">27</xref>] creates a difficulty in identifying the frequencies of the input signal. Thus, making a difficulty in identifying the right image (frequency).</p><p>The random signal has no specific frequency, otherwise, the signal is not random. In fact, the random signal behaves like the assembly of multiple signals, which causes some difficulties in identifying processes within the signal. <xref ref-type="fig" rid="fig3">Figure 3</xref> shows a 3-D image obtained from the absolute output values from the Wigner function [<xref ref-type="bibr" rid="scirp.107532-ref27">27</xref>] for a random input sequence.</p><p>Our new method should respond to changes in the time domain, where the existing methods (tests) (NIST test [<xref ref-type="bibr" rid="scirp.107532-ref18">18</xref>] ) fail. Thus, we test our method with non- stationary random signal. Non-stationary signals can be artificially assembled by using a number of random signals, as shown in <xref ref-type="fig" rid="fig4">Figure 4</xref>. where the “cyclic” part is also a random signal that is repeated during the signal.</p><p><xref ref-type="fig" rid="fig5">Figure 5</xref> shows two images obtained from the absolute output values from the Wigner function [<xref ref-type="bibr" rid="scirp.107532-ref27">27</xref>] where the left image was obtained for a random input signal while the right image was obtained for a non-random input signal having periodic parts in the signal. According to <xref ref-type="fig" rid="fig5">Figure 5</xref>, the signal intensity (z-axis) for the non-random input case, is approximately double the size compared with the signal intensity for the random input case. This shows that the values in the matrix obtained by the Wigner function [<xref ref-type="bibr" rid="scirp.107532-ref27">27</xref>] may be helpful in conjunction with some predefined parameters for classifying the probability of signal randomness degree.</p><p>With the help of the Wigner function [<xref ref-type="bibr" rid="scirp.107532-ref27">27</xref>] we can detect changes in the time plane. In order to see this, please refer to <xref ref-type="fig" rid="fig6">Figure 6</xref>, in which we show three different cases where the periodic part is placed in the tested sequence at different places: at the beginning, at the center and at the end of the tested sequence. Please note that in <xref ref-type="fig" rid="fig6">Figure 6</xref> the y-axis shows the intensity of the signal. According to <xref ref-type="fig" rid="fig6">Figure 6</xref>, the location of the periodic segment can be detected via the matrix obtained from the output of the Wigner function [<xref ref-type="bibr" rid="scirp.107532-ref27">27</xref>], by tracing the changes in the intensity (y-axis in <xref ref-type="fig" rid="fig6">Figure 6</xref>).</p></sec><sec id="s3"><title>3. The Wigner Test</title><p>In the previous section, we have mentioned that the output values from the matrix obtained from the Wigner function [<xref ref-type="bibr" rid="scirp.107532-ref27">27</xref>] may be helpful in conjunction with some predefined parameters for classifying the probability of signal randomness degree. In the following, we normalized the absolute values from the matrix obtained by the Wigner function [<xref ref-type="bibr" rid="scirp.107532-ref27">27</xref>] by a predefined parameter that depends on the input sequence length. For a sequence length of 1024, 2048 and 4096 the predefined parameter is set to 350, 550 and 850 respectively. These parameters were determined according to signal intensity (z-axis) expected to be obtained from a random sequence, so that a division of this value normalizes the matrix in such a way that it is possible to detect increases in the signal intensity, when the sequence is not random. The value was obtained by performing simulation experiments on 20 random sequences.</p><p>In the following we present four parameters (“Power”, “Distance”, “Density” and “Highest”) with their range of values for which the input sequence is declared as a random sequence. Please note, in order to declare that the sequence is a random sequence, the four parameters (“Power”, “Distance”, “Density” and “Highest”) must be in the range for which the sequence is declared as a random</p><p>sequence. Please note that in the following we mean by “samples” the absolute values from the matrix obtained from the Wigner function [<xref ref-type="bibr" rid="scirp.107532-ref27">27</xref>]. It should be pointed out that all the values or range of values of the listed parameters from below, were found by simulation experiments only.</p><p>The parameters are:</p><p>1) Power—Describes the height of the samples. To obtain a normalized range— the samples are divided by their maximum obtained value. For the random signal case, the received range must be between: Power = 0.7 - 0.8.</p><p>2) Distance—Describes the “distance” and is equal to the number of samples between two samples with “Power” 0.8. To obtain a normalized range—the received value is divided by the number of samples of the tested sequence. In the random signal case, the received “Distance” is: Distance = 0.1 - 0.3.</p><p>3) Density—Describes the ratio of the number of samples above the “Power” of 0.75 in the central part of the matrix to the numbers of samples above the “Power” of 0.75 outside the central part of the matrix. For a random signal, a high ratio is being received, meaning that most of the high samples are in the centre of the signal. In order to declare the input sequence as a random sequence, the received “Density” should be: Density &gt; 0.87.</p><p>4) Highest—Describes the number of samples above the “Power” of 0.9. In a random signal the received number is Highest &lt; 15.</p>Simulation Wigner Test<p><xref ref-type="table" rid="table1">Table 1</xref> shows some simulation results using the Wigner test (with the above four parameters test). For this purpose, eight sequences were applied with different number of cycles, with different cycle length and segment position of the cyclic part. Each structure was tested with sequence length of 1024, 2048 and 4096. In the following, the highlighted red section is the periodic part.</p><p>The sequences structure:</p><p>For sequence length of 1024 samples:</p><p>Sequence number 1—8 &#215; 128 (8 cycles of 128 bits sequence),</p><table-wrap id="table1" ><label><xref ref-type="table" rid="table1">Table 1</xref></label><caption><title> Result of the Wigner function</title></caption><table><tbody><thead><tr><th align="center" valign="middle"  rowspan="2"  ></th><th align="center" valign="middle"  rowspan="2"  >Length of sequence</th><th align="center" valign="middle"  colspan="5"  >Wigner test</th></tr></thead><tr><td align="center" valign="middle" >Power</td><td align="center" valign="middle" >Distance</td><td align="center" valign="middle" >Density</td><td align="center" valign="middle" >Highest</td><td align="center" valign="middle" >Random</td></tr><tr><td align="center" valign="middle" >1</td><td align="center" valign="middle" >1024</td><td align="center" valign="middle" >0.9 - 1</td><td align="center" valign="middle" >0.78</td><td align="center" valign="middle" >0.51</td><td align="center" valign="middle" >1208</td><td align="center" valign="middle" >no</td></tr><tr><td align="center" valign="middle" >2</td><td align="center" valign="middle" >1024</td><td align="center" valign="middle" >0.9 - 1</td><td align="center" valign="middle" >0.72</td><td align="center" valign="middle" >0.56</td><td align="center" valign="middle" >3611</td><td align="center" valign="middle" >no</td></tr><tr><td align="center" valign="middle" >3</td><td align="center" valign="middle" >1024</td><td align="center" valign="middle" >0.8 - 0.9</td><td align="center" valign="middle" >0.3</td><td align="center" valign="middle" >0.78</td><td align="center" valign="middle" >18</td><td align="center" valign="middle" >no</td></tr><tr><td align="center" valign="middle" >4</td><td align="center" valign="middle" >1024</td><td align="center" valign="middle" >0.7 - 0.8</td><td align="center" valign="middle" >0.25</td><td align="center" valign="middle" >0.88</td><td align="center" valign="middle" >6</td><td align="center" valign="middle" >yes</td></tr><tr><td align="center" valign="middle" >5</td><td align="center" valign="middle" >1024</td><td align="center" valign="middle" >0.8 - 0.9</td><td align="center" valign="middle" >0.39</td><td align="center" valign="middle" >0.79</td><td align="center" valign="middle" >19</td><td align="center" valign="middle" >no</td></tr><tr><td align="center" valign="middle" >6</td><td align="center" valign="middle" >1024</td><td align="center" valign="middle" >0.7 - 0.8</td><td align="center" valign="middle" >0.3</td><td align="center" valign="middle" >0.9</td><td align="center" valign="middle" >19</td><td align="center" valign="middle" >no</td></tr><tr><td align="center" valign="middle" >7</td><td align="center" valign="middle" >1024</td><td align="center" valign="middle" >0.9 - 1</td><td align="center" valign="middle" >0.47</td><td align="center" valign="middle" >0.83</td><td align="center" valign="middle" >36</td><td align="center" valign="middle" >no</td></tr><tr><td align="center" valign="middle" >8</td><td align="center" valign="middle" >1024</td><td align="center" valign="middle" >0.9 - 1</td><td align="center" valign="middle" >0.44</td><td align="center" valign="middle" >0.76</td><td align="center" valign="middle" >33</td><td align="center" valign="middle" >no</td></tr><tr><td align="center" valign="middle" >9</td><td align="center" valign="middle" >2048</td><td align="center" valign="middle" >0.9 - 1</td><td align="center" valign="middle" >0.75</td><td align="center" valign="middle" >0.6</td><td align="center" valign="middle" >3282</td><td align="center" valign="middle" >no</td></tr><tr><td align="center" valign="middle" >10</td><td align="center" valign="middle" >2048</td><td align="center" valign="middle" >0.9 - 1</td><td align="center" valign="middle" >0.8</td><td align="center" valign="middle" >0.5</td><td align="center" valign="middle" >9182</td><td align="center" valign="middle" >no</td></tr><tr><td align="center" valign="middle" >11</td><td align="center" valign="middle" >2048</td><td align="center" valign="middle" >0.7 - 0.8</td><td align="center" valign="middle" >0.22</td><td align="center" valign="middle" >0.77</td><td align="center" valign="middle" >13</td><td align="center" valign="middle" >no</td></tr><tr><td align="center" valign="middle" >12</td><td align="center" valign="middle" >2048</td><td align="center" valign="middle" >0.7 - 0.8</td><td align="center" valign="middle" >0.26</td><td align="center" valign="middle" >0.61</td><td align="center" valign="middle" >7</td><td align="center" valign="middle" >no</td></tr><tr><td align="center" valign="middle" >13</td><td align="center" valign="middle" >2048</td><td align="center" valign="middle" >0.9 - 1</td><td align="center" valign="middle" >0.29</td><td align="center" valign="middle" >0.91</td><td align="center" valign="middle" >48</td><td align="center" valign="middle" >no</td></tr><tr><td align="center" valign="middle" >14</td><td align="center" valign="middle" >2048</td><td align="center" valign="middle" >0.7 - 0.8</td><td align="center" valign="middle" >0.3</td><td align="center" valign="middle" >0.91</td><td align="center" valign="middle" >13</td><td align="center" valign="middle" >yes</td></tr><tr><td align="center" valign="middle" >15</td><td align="center" valign="middle" >2048</td><td align="center" valign="middle" >0.9 - 1</td><td align="center" valign="middle" >0.4</td><td align="center" valign="middle" >0.84</td><td align="center" valign="middle" >43</td><td align="center" valign="middle" >no</td></tr><tr><td align="center" valign="middle" >16</td><td align="center" valign="middle" >2048</td><td align="center" valign="middle" >0.9 - 1</td><td align="center" valign="middle" >0.4</td><td align="center" valign="middle" >0.8</td><td align="center" valign="middle" >51</td><td align="center" valign="middle" >no</td></tr><tr><td align="center" valign="middle" >17</td><td align="center" valign="middle" >4096</td><td align="center" valign="middle" >0.9 - 1</td><td align="center" valign="middle" >0.83</td><td align="center" valign="middle" >0.62</td><td align="center" valign="middle" >6346</td><td align="center" valign="middle" >no</td></tr><tr><td align="center" valign="middle" >18</td><td align="center" valign="middle" >4096</td><td align="center" valign="middle" >0.9 - 1</td><td align="center" valign="middle" >0.7</td><td align="center" valign="middle" >0.51</td><td align="center" valign="middle" >24,527</td><td align="center" valign="middle" >no</td></tr><tr><td align="center" valign="middle" >19</td><td align="center" valign="middle" >4096</td><td align="center" valign="middle" >0.7 - 0.8</td><td align="center" valign="middle" >0.25</td><td align="center" valign="middle" >0.72</td><td align="center" valign="middle" >4</td><td align="center" valign="middle" >no</td></tr><tr><td align="center" valign="middle" >20</td><td align="center" valign="middle" >4096</td><td align="center" valign="middle" >0.7 - 0.8</td><td align="center" valign="middle" >0.3</td><td align="center" valign="middle" >0.6</td><td align="center" valign="middle" >11</td><td align="center" valign="middle" >no</td></tr><tr><td align="center" valign="middle" >21</td><td align="center" valign="middle" >4096</td><td align="center" valign="middle" >0.9 - 1</td><td align="center" valign="middle" >0.42</td><td align="center" valign="middle" >0.92</td><td align="center" valign="middle" >84</td><td align="center" valign="middle" >no</td></tr><tr><td align="center" valign="middle" >22</td><td align="center" valign="middle" >4096</td><td align="center" valign="middle" >0.7 - 0.8</td><td align="center" valign="middle" >0.35</td><td align="center" valign="middle" >0.93</td><td align="center" valign="middle" >19</td><td align="center" valign="middle" >no</td></tr><tr><td align="center" valign="middle" >23</td><td align="center" valign="middle" >4096</td><td align="center" valign="middle" >0.9 - 1</td><td align="center" valign="middle" >0.48</td><td align="center" valign="middle" >0.84</td><td align="center" valign="middle" >96</td><td align="center" valign="middle" >no</td></tr><tr><td align="center" valign="middle" >24</td><td align="center" valign="middle" >4096</td><td align="center" valign="middle" >0.9 - 1</td><td align="center" valign="middle" >0.52</td><td align="center" valign="middle" >0.81</td><td align="center" valign="middle" >124</td><td align="center" valign="middle" >no</td></tr></tbody></table></table-wrap><p>Sequence number 2—16 &#215; 64 (16 cycles of 64 bits sequence),</p><p>Sequence number 3—768 + 32 &#215; 8 (periodic part in the end of the sequence),</p><p>Sequence number 4—32 &#215; 8 + 768 (periodic part in the start of the sequence),</p><p>Sequence number 5—384 + 32 &#215; 8 + 384 (periodic part in the middle of sequence),</p><p>Sequence number 6—128 + 320 + 128 + 320 + 128,</p><p>Sequence number 7—64 + 128 + 64 + 128 + 64 + 128 + 64 + 128 + 64 + 128 + 64,</p><p>Sequence number 8—32 &#215; 2 + 128 + 32 &#215; 2 + 128 + 32 &#215; 2 + 128 + 32 &#215; 2 + 128 + 32 &#215; 2 + 128 + 32 &#215; 2.</p><p>For sequence length of 2048 samples:</p><p>Sequence number 9—8 &#215; 256 (8 cycles of 256 bits sequence),</p><p>Sequence number 10—16 &#215; 128 (16 cycles of 128 bits sequence),</p><p>Sequence number 11—1536 + 64 &#215; 8 (periodic part in the end of the sequence),</p><p>Sequence number 12—64 &#215; 8 + 1536 (periodic part in the start of the sequence),</p><p>Sequence number 13—768 + 64 &#215; 8 + 768 (periodic part in the middle of sequence),</p><p>Sequence number 14—256 + 640 + 256 + 640 + 256,</p><p>Sequence number 15—128 + 256 + 128 + 256 + 128 + 256 + 128 + 256 + 128 + 256 + 128,</p><p>Sequence number 16—64 &#215; 2 + 256 + 64 &#215; 2 + 256 + 64 &#215; 2 + 256 + 64 &#215; 2 + 256 + 64 &#215; 2 + 256 + 64 &#215; 2.</p><p>For sequence length of 4096 samples:</p><p>Sequence number 17—8 &#215; 512 (8 cycles of 512 bits sequence),</p><p>Sequence number 18—16 &#215; 256 (16 cycles of 256 bits sequence),</p><p>Sequence number 19—3072 + 128 &#215; 8 (periodic part in the end of the sequence),</p><p>Sequence number 20—128 &#215; 8 + 3072 (periodic part in the start of the sequence),</p><p>Sequence number 21—1536 + 128 &#215; 8 + 1536 (periodic part in the middle of sequence),</p><p>Sequence number 22—512 + 1280 + 512 + 1280 + 512,</p><p>Sequence number 23—256 + 512 + 256 + 512 + 256 + 512 + 256 + 512 + 256 + 512 + 256,</p><p>Sequence number 24—128 &#215; 2 + 512 + 128 &#215; 2 + 512 + 128 &#215; 2 + 512 + 128 &#215; 2 + 512 + 128 &#215; 2 + 512 + 128 &#215; 2</p><p>Simulation results:</p><p>Please note, in <xref ref-type="table" rid="table1">Table 1</xref> the red colored values are the indices that classify the sequence as non-random. The sequence is considered as random only when the four parameters (“Power”, “Distance”, “Density” and “Highest”) meet the criteria of the random sequence.</p><p>According to <xref ref-type="table" rid="table1">Table 1</xref>, the four parameters (“Power”, “Distance”, “Density” and “Highest”) are effective in classifying if the given sequence is a random sequence or not. But it should be pointed out here that the good results were obtained only for those sequences that have a high periodicity within the sequence or have a long cyclic segment. In addition, with the four parameters (“Power”, “Distance”, “Density” and “Highest”) we are not able to locate the cyclic section in the tested sequence. Thus, as will be explained in the next section we need the GGD [<xref ref-type="bibr" rid="scirp.107532-ref28">28</xref>] [<xref ref-type="bibr" rid="scirp.107532-ref29">29</xref>].</p></sec><sec id="s4"><title>4. The Proposed Algorithm</title><p>The general structure of the algorithm can be seen in the block diagram presented in <xref ref-type="fig" rid="fig7">Figure 7</xref>. In general, the tested sequence is a vector containing only ones and minus ones in the digital time domain. By using the Wigner function [<xref ref-type="bibr" rid="scirp.107532-ref27">27</xref>] this vector is converted to a quadratic matrix which represents the sequence behavior in the time and frequency domains. This matrix allows us to decide whether the tested sequence has a high periodicity within the sequence and should be announced as a non-random sequence, or at this stage, no periodicity was detected within the sequence, thus we should move on to the next step of the algorithm. To detect changes over the time domain, the GGD [<xref ref-type="bibr" rid="scirp.107532-ref28">28</xref>] [<xref ref-type="bibr" rid="scirp.107532-ref29">29</xref>] is being used as will be explained later on in this section.</p><p>According to <xref ref-type="fig" rid="fig7">Figure 7</xref>, s [ n ] is the sampled output from the RNG with sample rate of f s , where T = 1 / f s and T is the sampling period ( s ( n T ) → s [ n ] ) . Next, this signal ( s [ n ] ) is converted to an analytic signal with the help of the Hilbert transform [<xref ref-type="bibr" rid="scirp.107532-ref30">30</xref>]. Thus now, the analytical signal s ′ [ n ] is driven to the Wigner function [<xref ref-type="bibr" rid="scirp.107532-ref27">27</xref>]. Please note, the input to the Wigner function [<xref ref-type="bibr" rid="scirp.107532-ref27">27</xref>] must be an analytical signal to avoid the aliasing problem with the Wigner transform [<xref ref-type="bibr" rid="scirp.107532-ref27">27</xref>] for non-analytical signals. The output from the Wigner function [<xref ref-type="bibr" rid="scirp.107532-ref27">27</xref>] is W [ n , ω ] and is given by:</p><p>W [ n , τ ] = f f t ( R s s [ τ , n ] ) (1)</p><p>where ω = 2 π f , f stands for the frequency, f f t ( . ) is the Fast Fourier Transform on ( . ) and R s s [ τ , n ] is the Autocorrelation of s ′ [ n ] given by:</p><p>R s s [ τ , n ] = E [ ( s ′ [ n ] ∗ s ′ ∗ [ n + τ ] ) ] (2)</p><p>where “*” is the multiplication operation, s ′ ∗ [ n ] is the conjugate part of s ′ [ n ] and E [ . ] stands for the expectation operation.</p><p>At this point, the decision part of <xref ref-type="fig" rid="fig7">Figure 7</xref> which receives the output from the Wigner function [<xref ref-type="bibr" rid="scirp.107532-ref27">27</xref>] is used to decide whether the incoming sequence has a high periodicity within the sequence or whether the repetitive sequence has a high length. The purpose of this examination is to determine whether the sequence can be disqualified for being a random sequence or can be moved on to the next step of the algorithm. In other words, if the algorithm does not detect a high periodicity within the sequence or a high length of a repetitive sequence at this point, we continue to the next step in the algorithm which is the GGD function [<xref ref-type="bibr" rid="scirp.107532-ref28">28</xref>] [<xref ref-type="bibr" rid="scirp.107532-ref29">29</xref>]. This step is based on examining the changes in the shape parameter associated with the GGD function [<xref ref-type="bibr" rid="scirp.107532-ref28">28</xref>] [<xref ref-type="bibr" rid="scirp.107532-ref29">29</xref>].</p><p>Changes in the shape parameter of the GGD [<xref ref-type="bibr" rid="scirp.107532-ref28">28</xref>] [<xref ref-type="bibr" rid="scirp.107532-ref29">29</xref>] presentation, change the shape of the probability density function (pdf) of the given input sequence to the GDD [<xref ref-type="bibr" rid="scirp.107532-ref28">28</xref>] [<xref ref-type="bibr" rid="scirp.107532-ref29">29</xref>] which may have a Laplacian, or double exponential distribution, a Gaussian distribution or a uniform distribution for a shape parameter equal to one, two and infinity respectively. Obviously, changes in the pdf of the tested input sequence to the GDD [<xref ref-type="bibr" rid="scirp.107532-ref28">28</xref>] [<xref ref-type="bibr" rid="scirp.107532-ref29">29</xref>], indicates that the input sequence is not random. The shape parameter allows us to characterize the absolute values from the matrix obtained from the Wigner function [<xref ref-type="bibr" rid="scirp.107532-ref27">27</xref>], so that each row or column in the matrix can be expressed by a single value. Thus, a vector that characterizes the time or the frequency domain through the shape parameter can be obtained. In our algorithm, the time domain is in our interest, therefore we calculate the shape parameter on each column (representing the frequency domain) in the matrix. The obtained vector will be denoted as G [ n ] (<xref ref-type="fig" rid="fig8">Figure 8</xref>).</p><p>According to the GGD function [<xref ref-type="bibr" rid="scirp.107532-ref28">28</xref>] [<xref ref-type="bibr" rid="scirp.107532-ref29">29</xref>], the shape parameter is given by:</p><p>p ( k i ) = { 2 ln 27 16 / ln 3 4 k i 2                                                                                             if   k i ∈ [ 0 , 0.131246 ) 1 2 a 1 ( − a 2 + a 2 2 − 4 a 1 a 3 + 4 a 1 k i )                                   if   k i ∈ [ 0.131246 , 0.448994 ) 1 2 b 3 k i ( b 1 − b 2 k i − _ i ( b 1 − b 2 k i ) 2 − 4 b 3 k i 2 )       if   k i ∈ [ 0.448994 , 0.671256 ) 1 2 c 3 ( c 2 − c 2 2 + 4 c 3 ln ( 3 − 4 k i 4 c 1 )                                   if   k i ∈ [ 0.671256 , 0.75 ) (3)</p><p>where a 1 = − 0.535707356 ,     a 2 = 1.168939911 ,     a 3 = − 0.1516189217 , b 1 = 0.9694429 ,     b 2 = 0.8727534 ,     b 3 = 0.07350824 , c 1 = 0.3655157 ,     c 2 = 0.6723532 ,     c 3 = 0.033834.</p><p>According to [<xref ref-type="bibr" rid="scirp.107532-ref28">28</xref>] [<xref ref-type="bibr" rid="scirp.107532-ref29">29</xref>], k i can be calculated by:</p><p>k i = ( E | W ˜ i | ) 2 E [ ( | W ˜ i | ) 2 ] (4)</p><p>where W ˜ i is the i-th column (representing the frequency domain) in the matrix W [ n , ω ] .</p><p>Based on Equation (3) and Equation (4) the vector G [ n ] can be defined:</p><p>G [ n ] = [ p ( k 1 ) , p ( k 2 ) , p ( k 3 ) , ⋯ , p ( k N ) ]</p><p>where N is the length of the tested input sequence.</p><p>The vector G [ n ] holds all the changes in the time domain of the shape parameter. An example of the shape parameter vector G [ n ] can be seen in <xref ref-type="fig" rid="fig9">Figure 9</xref> for a random input sequence of length 1024.</p><p>To simplify the shape parameter signal classification, an average operation is carried out on G [ n ] by averaging every eight following samples of G [ n ] for an input sequence with length of 1024. In generally, the number of samples for the average operation is 8, 16 and 32 for an input sequence with length of 1024, 2048 and 4096 respectively. The averaged signal G [ n ] from <xref ref-type="fig" rid="fig9">Figure 9</xref> is presented in <xref ref-type="fig" rid="fig1">Figure 1</xref>0. Please note, in order to maintain the same vector length, each of these eight samples (for an input sequence with length of 1024) received the averaged value obtained by the averaging operation.</p><p>In the following we define:</p><p>W ˜ i = W ( i , j )     for   i = 1 , 2 , 3 , ⋯ , N     ( time domain ) (5)</p><p>W ^ j = W ( i , j )     for     j = 1 , 2 , 3 , ⋯ , N     ( freguency domain ) (6)</p><p>According to Equation (4), Equation (5) and Equation (6) we can define:</p><p>k i = ( E | W ˜ i | ) 2 E [ ( | W ˜ i | ) 2 ]     for   i = 1 , 2 , 3 , ⋯ , N     ( time domain ) (7)</p><p>k ^ j = ( E | W ^ j | ) 2 E [ ( | W ^ j | ) 2 ]     for   j = 1 , 2 , 3 , ⋯ , N     ( freguency domain ) (8)</p><p>Therefore, the vectors G [ n ] and G ^ [ n ] can be defined:</p><p>G [ n ] = [ p ( k 1 ) , p ( k 2 ) , p ( k 3 ) , ⋯ , p ( k N ) ]     ( time domain ) (9)</p><p>G ^ [ n ] = [ p ( k ^ 1 ) , p ( k ^ 2 ) , p ( k ^ 3 ) , ⋯ , p ( k ^ N ) ]     ( freguency domain ) (10)</p><p>After the average operation on G [ n ] and G ^ [ n ] , we get the vectors g ˜ [ n ] and g ^ [ n ] respectively. In the following we set q equal to 1, 2, 4 for an input sequence length of 1024, 2048 and 4096 respectively.</p><p>g ˜ [ n ] = [ a 0 , a 8 q , a 16 q , a 24 q , ⋯ , a N − 8 q ]     ( time domain )</p><p>g ^ [ n ] = [ a ^ 0 , a ^ 8 q , a ^ 16 q , a ^ 24 q , ⋯ , a ^ N − 8 q ]     ( freguency domain )</p><p>For simplicity we show in the following a j and a ^ j for q = 1 where j = 0 , 8 q , ⋯ , N − 8 q . Please refer to the Appendix for the definition of a j and a ^ j for q equal to two and four.</p><p>a j = [ 1 8 ∑ i = 1 i = 8   G [ i + j ] , 1 8 ∑ i = 1 i = 8   G [ i + j ] , 1 8 ∑ i = 1 i = 8   G [ i + j ] , 1 8 ∑ i = 1 i = 8   G [ i + j ] ,               1 8 ∑ i = 1 i = 8   G [ i + j ] , 1 8 ∑ i = 1 i = 8   G [ i + j ] , 1 8 ∑ i = 1 i = 8   G [ i + j ] , 1 8 ∑ i = 1 i = 8   G [ i + j ] ]</p><p>a ^ j = [ 1 8 ∑ i = 1 i = 8   G ^ [ i + j ] , 1 8 ∑ i = 1 i = 8   G ^ [ i + j ] , 1 8 ∑ i = 1 i = 8   G ^ [ i + j ] , 1 8 ∑ i = 1 i = 8   G ^ [ i + j ] ,               1 8 ∑ i = 1 i = 8   G ^ [ i + j ] , 1 8 ∑ i = 1 i = 8   G ^ [ i + j ] , 1 8 ∑ i = 1 i = 8   G ^ [ i + j ] , 1 8 ∑ i = 1 i = 8   G ^ [ i + j ] ]</p>Detection Algorithm<p>The signal D [ n ] is the output from the detection algorithm (<xref ref-type="fig" rid="fig7">Figure 7</xref>), that classifies whether the input sequence is a random sequence or not, based on passing or not passing seven test cases that will be presented in this section. In addition, this algorithm marks the places that are suspicious of having a repeated sequence within the tested sequence. Thus, there are two steps in the detection algorithm:</p><p>1) Determine whether the sequence is random or not random.</p><p>2) Finding the periodic part in the tested input sequence if it exists.</p><p>Let us start explaining the first step. Here we apply the histogram function (from Matlab version R2018a) on the vectors g ˜ [ n ] and g ^ [ n ] (obtained from the tested input sequence) in order to have the distribution of the appearance of the values of the shape parameter. In addition, for comparison, we apply also the histogram function on the vectors g ˜ [ n ] and g ^ [ n ] obtained from a random sequence. In order to generate this random sequence, the “randn” function from the Matlab version R2018a is applied which generates “random” numbers from a Gaussian distribution with variance of one and with a zero mean. Next, if the generated number is positive or equal to zero, then the used number is set to one, else it is set to zero. Please note that for some tests in the NIST test [<xref ref-type="bibr" rid="scirp.107532-ref18">18</xref>] a sequence of ones and zeros are required. Thus, our generated sequence is converted to ones and zeros following [<xref ref-type="bibr" rid="scirp.107532-ref18">18</xref>]. It should be pointed out that the various parameters for the following seven test cases were found by simulation experiments only. In the following, we use thirty bins for representing the histogram. But those bins that have a height less than 0.01 will be deleted and not considered in the following tests. In addition, after the deletion of those bins that have a height of less than 0.01, the bins that are not close to the center bins are also deleted. In order to declare a sequence to be a random sequence, the seven test cases have to be passed.</p><p>Please note that in Figures 11-17 the x-axis represents the various values of the shape parameter associated with the tested input sequence, while the y-axis represents the probability density of their appearance. As already was mentioned earlier in this paper, the shape parameter allows us to characterize the absolute values from the matrix obtained from the Wigner function [<xref ref-type="bibr" rid="scirp.107532-ref27">27</xref>], so that each row or column in the matrix can be expressed by a single value. Thus, a vector that characterizes the time or the frequency domain through the shape parameter can be obtained.</p><p>In the following, we mean by saying that the test is performed in the time domain that the shape parameter was calculated on each column (representing the frequency domain) in the matrix. In addition, if it is stated that the test is performed in the frequency domain, it means that the shape parameter was calculated on each row (representing the time domain) in the matrix.</p><p>The seven test cases are:</p><p>Test 1—Checks, whether the maximum height is at the center of the graph and if the width of the graph is smaller than 0.2. This test is performed in the time domain. If the conditions are not met—the signal will be marked as a non- random sequence. An example of this test can be seen in <xref ref-type="fig" rid="fig1">Figure 1</xref>1, where at the left figure we have the result for a random sequence while at the right figure we have the result for a non-random input sequence. According to <xref ref-type="fig" rid="fig1">Figure 1</xref>1, the width of the graph in the right figure is higher than 0.2 and the maximum height is not at the center of the graph. Thus, the tested input sequence is suspected to be a non-random sequence. Please note, that we have marked all the bins that were already deleted in the early stage of our test.</p><p>Test 2—Checks if there is more than one peak in the graph. It looks for the two highest bins in the graph and declares that the tested input sequence is suspected to be a non-random sequence if at least there is one bin between the two highest found bins, and the difference between the heights of those two highest bins is less than 15%. This test is performed in the time domain. An example for this test can be seen in <xref ref-type="fig" rid="fig1">Figure 1</xref>2 where at the right figure we have the result for a non-random input sequence.</p><p>Test 3—Checks whether the maximum height is obtained in the x-axis between 1.29 and 1.4. If it is outside of this boundary, the sequence is marked as a non-random sequence. This test performed in the time domain. An example of this test can be seen in <xref ref-type="fig" rid="fig1">Figure 1</xref>3 where on the right figure we have the result for a non-random sequence where the maximum height is not obtained in the x-axis between 1.29 and 1.4.</p><p>Test 4—Checks whether the maximum height is above 0.25. If it is, the tested input sequence is marked as a non-random sequence. This test is performed in the frequency domain. The main idea behind this test is that if there is a concentration around a certain frequency, it indicates that the tested sequence is suspected to have a periodicity within the sequence. An example of this test can be seen in <xref ref-type="fig" rid="fig1">Figure 1</xref>4, where we have at the right figure the result for a non-random input sequence where the maximum bin is more than 0.25.</p><p>Test 5—Checks the position of the maximum height of the bin between the time domain and the frequency domain. If there is no match, this indicates that the tested input sequence is a non-random sequence. An example for this test can be seen in <xref ref-type="fig" rid="fig1">Figure 1</xref>5, where we have at the right figures the result for a non-random input sequence where there is no match between the position of the maximum height of the bin between the time domain and the frequency domain.</p><p>Test 6—This test checks two conditions concerning the heights of the bins. First, it checks if a bin can be found with a height lower than 0.05. Next, it checks whether a bin can be found with a height above 0.2. If no bin is left with a height lower than 0.05 and a bin is found with a height above 0.2, the sequence is announced as a non-random sequence. This test is performed in the time domain. An example for this test can be seen in <xref ref-type="fig" rid="fig1">Figure 1</xref>6, where we have at the right figure the result for a non-random input sequence where we have marked all the bins that were already deleted before entering into this test. Now, according to <xref ref-type="fig" rid="fig1">Figure 1</xref>6, we have a bin with a height above 0.2 and there is no bin with a height lower than 0.05. Thus, the result presented in the right figure of <xref ref-type="fig" rid="fig1">Figure 1</xref>6, corresponds to a non-random sequence. Please note, that we have marked in <xref ref-type="fig" rid="fig1">Figure 1</xref>6 all the bins that were already deleted in the early stage of our test.</p><p>Test 7—The pdf should increase monotonically towards the center bin (or to the bin with the maximum height) of the pdf and decrease monotonically from the center bin (or from the bin with the maximum height) downwards. If there is a 40% decrease in the height of a bin with the bin before it, the tested sequence is announced as a non-random sequence. An example for this test can be seen in <xref ref-type="fig" rid="fig1">Figure 1</xref>7, where we have at the right figure the result for a non-random input sequence where we have circled the places where the decrease in the height of 40% was found. Please note, that we have marked all the bins that were already deleted in the early stage of our test.</p><p>Next, we determine the mathematical description of the above seven tests.</p><p>First, we define:</p><p>∑ i = 1 i = L m ˜ i = 1 ;     ∑ i = 1 i = L m ^ i = 1</p><p>where m ˜ i and m ^ i holds the number of observations of g ˜ [ n ] and g ^ [ n ] respectively that fall into each of the disjoint bins divided by the length of g ˜ [ n ] and g ^ [ n ] respectively, and L is the total number of bins.</p><p>x d ( i ) = min ( g ˜ [ n ] ) + d i f f x d ∗ ( i − 1 ) ,     i = 1 , 2 , 3 , ⋯ , L</p><p>d i f f x d = max ( g ˜ [ n ] ) − min ( g ˜ [ n ] ) L</p><p>where x d ( i ) holds the value in the x-axis of the edge where the bin begins.</p><p>x ^ d ( i ) = min ( g ^ [ n ] ) + max ( g ^ [ n ] ) − min ( g ^ [ n ] ) L ∗ ( i − 1 ) ,     i = 1 , 2 , 3 , ⋯ , L</p><p>where x ^ d ( i ) holds the value in the x-axis of the edge where the bin begins. It was already mentioned earlier that those bins that have a height less than 0.01 will be deleted and not considered in the seven tests. In addition, after the deletion of those bins that have a height of less than 0.01, the bins that are not close to the center bins are also deleted. Thus, from the mathematical point of view we may write:</p><p>Step 1: find the index or indexes where ( m ˜ i &lt; 0.01 ) is true and set those</p><p>indexes to i 1 , i 2 , i 3 , ⋯ , i L .</p><p>Step 2: set m ˜ i ( i a ) = 0 ; for a = 1 , 2 , 3 , ⋯ , L according to the founded</p><p>indexes from Step 1.</p><p>Step 3: find max ( m ˜ 1 , m ˜ 2 , ⋯ , m ˜ L ) and set the index i where the maximum</p><p>was achieved as i 1</p><p>Step 4: a = 1 ;</p><p>for i = 1 to ( i 1 − 1 ) checking if there is a bin with m ˜ i = 0 in order to</p><p>set “a” as the start of the histogram after this bin.</p><p>if m ˜ i = = 0 then</p><p>a = i + 1</p><p>end</p><p>end</p><p>Step 5: b = 0 ;</p><p>i = i 1 + 1 ;</p><p>while ( b = = 0 ) checking if there is a bin with m ˜ i = 0 in order to</p><p>set “b” as the end of the histogram before this bin.</p><p>if ( i = = L ) then</p><p>b = L</p><p>end</p><p>if ( m ˜ i = = 0 ) then</p><p>b = i − 1</p><p>end</p><p>i = i + 1</p><p>end</p><p>Test number 1:</p><p>Step 1: find max ( m ˜ a , m ˜ a + 1 , ⋯ , m ˜ b ) and set the index i ( a &lt; i &lt; b ) where the</p><p>maximum was achieved as i 1 .</p><p>Step 2: if ( | ( b − i 1 ) − ( i 1 − a ) | ≤ 2 &amp; x d ( b ) + d i f f x d − x d ( a ) &lt; 0.2 ) then</p><p>D n ( 1 ) = 1 Random signal</p><p>else</p><p>D n ( 1 ) = 0 Not Random signal</p><p>end</p><p>Test number 2:</p><p>Step 1: find max ( m ˜ a , m ˜ a + 1 , ⋯ , m ˜ b ) and set the index i ( a &lt; i &lt; b ) where the</p><p>maximum was achieved as i 1 .</p><p>Step 2: find max ( m ˜ a , m ˜ a + 1 , ⋯ , m ˜ i 1 − 1 , m ˜ i 1 + 1 , ⋯ , m ˜ b ) and set the index i</p><p>( a &lt; i &lt; b ) where the maximum was achieved as i 2 .</p><p>Step 3: if ( m ˜ i 1 − m ˜ i 2 m ˜ 1 100 ) &lt; 15 &amp; ( | i 2 − i 1 | ≥ 2 ) then</p><p>D n ( 2 ) = 0 Not Random signal</p><p>else</p><p>D n ( 2 ) = 1 Random signal</p><p>end</p><p>Test number 3:</p><p>Step 1: find max ( m ˜ a , m ˜ a + 1 , ⋯ , m ˜ b ) and set the index i</p><p>( a &lt; i &lt; b ) where the maximum was achieved as i 1 .</p><p>Step 2: if 1.29 &lt; x d ( i 1 ) &lt; 1.4 then</p><p>D n ( 3 ) = 1 Random signal</p><p>else</p><p>D n ( 3 ) = 0 Not Random signal</p><p>end</p><p>Test number 4:</p><p>Step 1: if ( max ( m ^ 1 , m ^ 2 , ⋯ , m ^ L ) ) &gt; 0.25 then</p><p>D n ( 4 ) = 0 Not Random signal</p><p>else</p><p>D n ( 4 ) = 1 Random signal</p><p>end</p><p>Test number 5:</p><p>Step 1: find max ( m ˜ a , m ˜ a + 1 , ⋯ , m ˜ b ) and set the index i</p><p>( a &lt; i &lt; b ) where the maximum was achieved as i 1 .</p><p>Step 2: find max ( m ^ 1 , m ^ 2 , ⋯ , m ^ L ) and set the index i</p><p>( 1 &lt; i &lt; L ) where the maximum was achieved as i 2 .</p><p>Step 3: if | x d ( i 1 ) − x ^ d ( i 2 ) | ≤ 0.05 then</p><p>D n ( 5 ) = 1 Random signal</p><p>else</p><p>D n ( 5 ) = 0 Not Random signal</p><p>end</p><p>Test number 6:</p><p>Step 1: if ( max ( m ˜ a , m ˜ a + 1 , ⋯ , m ˜ b ) &gt; 0.2 ) &amp; ( min ( m ˜ a , m ˜ a + 1 , ⋯ , m ˜ b ) &gt; 0.05 )</p><p>then</p><p>D n ( 6 ) = 0 Not Random signal</p><p>else</p><p>D n ( 6 ) = 1 Random signal</p><p>end</p><p>Test number 7:</p><p>Step 1: find max ( m ˜ a , m ˜ a + 1 , ⋯ , m ˜ b ) and set the index i</p><p>( a &lt; i &lt; b ) where the maximum was achieved as i 1 .</p><p>Step 2: D n ( 7 ) = 1 Random signal</p><p>for i = a to i 1 checking if there is an increase monotonically</p><p>towards the center bin</p><p>if ( | m ˜ i − m ˜ i + 1 | m ˜ i 100 ≥ 40 ) &amp; ( m ˜ i &gt; m ˜ i + 1 ) then</p><p>D n ( 7 ) = 0 Not Random signal</p><p>end</p><p>end</p><p>for i = i 1 to b checking if there is a decrease monotonically</p><p>from the center bin down</p><p>if ( | m ˜ i − m ˜ i + 1 | m ˜ i 100 ≥ 40 ) &amp; ( m ˜ i &lt; m ˜ i + 1 ) then</p><p>D n ( 7 ) = 0 Not Random signal</p><p>end</p><p>end</p><p>Outcome from the seven tests:</p><p>if ∑ k = 1 k = 7 D n ( k ) = = 7 then</p><p>D = 1 the tested sequence is Random</p><p>else</p><p>D = 0 the tested sequence is not Random</p><p>end</p><p>Please note that when D = 0 we continue to the next step in the algorithm of locating the periodic part.</p><p>The second step in the detection algorithm is to find the periodic part in the tested input sequence. For this purpose, we apply three different kind of averages on the tested averaged vector G [ n ] ( g ˜ [ n ] ). This part of the algorithm is performed only on g ˜ [ n ] which represents the time domain, because in this stage we want to locate the periodic part. The three different kind of averages are as follows:</p><p>1) The average of the whole vector g ˜ [ n ] (except for some samples at the beginning and at the end) is carried out here. Thus, one average value is obtained. In the following, we denote this kind of averaging as “Average number 1”.</p><p>2) The vector g ˜ [ n ] (except for some samples at the beginning and at the end) is divided into 3 parts (40% - 20% - 40%) and then the average operation is carried out on each part. Thus, here we have three average values. In the following, we denote this kind of averaging as “Average number 2”.</p><p>3) The vector g ˜ [ n ] (except for some samples at the beginning and at the end) is divided into 3 parts (25% - 50% - 25%) and then the average operation is carried out on each part. Thus, here we have three average values. In the following, we denote this kind of averaging as “Average number 3”.</p><p><xref ref-type="fig" rid="fig1">Figure 1</xref>8 presents the three different kind of averages carried out on the tested averaged vector G [ n ] ( g ˜ [ n ] ).</p><p>where by “Margin” we mean that at the beginning and at the end of the averaged tested G [ n ] no averaging operation is carried out. For the case of a 1024, 2048 and 4096 length sequence, the margin on each side is 32 samples, 64 samples and 128 samples respectively.</p><p>Now, in order to declare an area to be suspicious of not being a random sequence, we compare the values of the averaged vector G [ n ] to the values of Average number 1, Average number 2 and to Average number 3. In general, if the values of the averaged vector G [ n ] are above or below the average number (Average number 1 &#177; ε 1 , Average number 2 &#177; ε 2 , Average number 3 &#177; ε 3 where ε 1 , ε 2 and ε 3 are predefined values) for some tested values that come in sequence, a suspicious place is declared. For more details, please refer to Figures 19-21 which describe in more details the comparison operation between the values of the averaged vector G [ n ] and the Average number 1 to Average number 3.</p><p>Figures 22-25 show the simulated results obtained for a non-random sequence with length of 1024 where the averaged vector G [ n ] ( g ˜ [ n ] ) was compared to the three different kind of averages (Average number 1, Average number 2, Average number 3) while <xref ref-type="fig" rid="fig2">Figure 2</xref>6 holds the total result (collected from <xref ref-type="fig" rid="fig2">Figure 2</xref>2, <xref ref-type="fig" rid="fig2">Figure 2</xref>3, <xref ref-type="fig" rid="fig2">Figure 2</xref>5) of the suspicious places where the tested sequence is suspicious not to be a random sequence.</p><p>In the following, we describe the flowchart for finding the suspicious places of the periodic parts in the tested input sequence by using the values for Average number 1, Average number 2 and Average number 3.</p><p>Comparison to Average number 1:</p><p>Step 1: set g a v e r a g e 1 = [ g ˜ ( e d g e ) , g ˜ ( e d g e + 1 ) , ⋯ , g ˜ ( N − e d g e ) ] .</p><p>“edge” is the length of the margin defined as 32, 64 and 128 for a 1024,</p><p>2048 and 4096 length of input sequence respectively.</p><p>The input sequence length is defined as N.</p><p>Step 2: set Average number 1 = g a v e r a g e 1 N − 2 ∗ e d g e</p><p>Step 3: set g t e s t 1 a = [ g ˜ ( e d g e ) , g ˜ ( e d g e + 1 ) , ⋯ , g ˜ ( ⌊ N ∗ 0.25 ⌋ ) ]</p><p>where ⌊ ( . ) ⌋ is the rounding down operation on ( . ) .</p><p>Step 4:find the index or indexes where ( g t e s t 1 a &gt; 1.01 ∗ A v e r a g e n u m b e r   1 )</p><p>is true and set those indexes to i 1 , i 2 , i 3 , ⋯ , i ⌊ N ∗ 0.25 ⌋ − e d g e + 1</p><p>Step 5: set g c o m p a r i s o n 1 a ( i a ) = 1 ;</p><p>for a = 1 , 2 , 3 , ⋯ , ( ⌊ N ∗ 0.25 ⌋ − e g d e + 1 )</p><p>according to the founded indexes of Step 4.</p><p>Step 6: find the number of groups in g c o m p a r i s o n 1 a of consecutive samples</p><p>equal to one and set this number to K1.</p><p>Step 7: find the length of those groups of consecutive samples equal to one</p><p>from Step 6 and hold them in the vector:</p><p>l e n g t h 1 a ( j ) ; for j = 1 , ⋯ , K 1</p><p>Step 8: find the start and end position of the founded groups from</p><p>Step 6 and hold them in the matrix:</p><p>p l a c e 1 a ( j , i ) ; for j = 1 , ⋯ , K 1 ; i = 1 , 2</p><p>Step 9: set n u m b e r 1 a = K 1</p><p>A1 = 20, 40 and 80 for 1024, 2048 and 4096 length of sequence respectively.</p><p>for j = 1 to K1</p><p>if l e n g t h 1 a ( j ) &lt; A 1 then</p><p>n u m b e r 1 a = n u m b e r 1 a − 1</p><p>for i = p l a c e 1 a ( j , 1 ) to p l a c e 1 a ( j , 2 )</p><p>g c o m p a r i s o n 1 a ( i ) = 0</p><p>end</p><p>end</p><p>end</p><p>Step 10: set g t e s t 1 b = [ g ˜ ( ⌊ N ∗ 0.45 ⌋ ) , g ˜ ( ⌊ N ∗ 0.45 ⌋ + 1 ) , ⋯ , g ˜ ( ⌊ N ∗ 0.55 ⌋ ) ]</p><p>Step 11: find the index or indexes where ( g t e s t 1 b &lt; 0.97 ∗ A v e r a g e n u m b e r 1 )</p><p>is true and set those indexes to i 1 , i 2 , i 3 , ⋯ , i ⌊ N ∗ 0.55 ⌋ − ⌊ N ∗ 0.45 ⌋ + 1</p><p>Step 12: set g c o m p a r i s o n 1 b ( i a ) = 1 ;</p><p>for a = 1 , 2 , 3 , ⋯ , ( ⌊ N ∗ 0.55 ⌋ − ⌊ N ∗ 0.45 ⌋ + 1 ) according to the</p><p>founded indexes of Step 11.</p><p>Step 13: find the number of groups in g c o m p a r i s o n 1 b of consecutive samples</p><p>equal to one and set this number to K2.</p><p>Step 14: find the length of those groups of consecutive samples equal to one</p><p>from Step 13 and hold them in the vector:</p><p>l e n g t h 1 b ( j ) ; for j = 1 , ⋯ , K 2</p><p>Step 15: find the start and end position of the founded groups from</p><p>Step 13 and hold them in the matrix:</p><p>p l a c e 1 b ( j , i ) ; for j = 1 , ⋯ , K 2 ; i = 1 , 2</p><p>Step 16: set n u m b e r 1 b = K 2</p><p>A2 = 33, 56 and 95 for 1024, 2048 and 4096 length of sequence respectively.</p><p>for j = 1 to K2</p><p>if l e n g t h 1 b ( j ) &lt; A 2 then</p><p>n u m b e r 1 b = n u m b e r 1 b − 1</p><p>for i = p l a c e 1 b ( j , 1 ) to p l a c e 1 b ( j , 2 )</p><p>g c o m p a r i s o n 1 b ( i ) = 0</p><p>end</p><p>end</p><p>end</p><p>Step 17: set g t e s t 1 c = [ g ˜ ( ⌊ N ∗ 0.75 ⌋ ) , g ˜ ( ⌊ N ∗ 0.75 ⌋ + 1 ) , ⋯ , g ˜ ( N − e d g e ) ] .</p><p>Step 18: find the index or indexes where ( g t e s t 1 c &gt; 1.01 ∗ A v e r a g e n u m b e r   1 )</p><p>is true and set those indexes to i 1 , i 2 , i 3 , ⋯ , i ⌊ N − e d g e ⌋ − ⌊ N ∗ 0.75 ⌋ + 1</p><p>Step 19: set g c o m p a r i s o n 1 c ( i a ) = 1 ;</p><p>for a = 1 , 2 , 3 , ⋯ , ( ⌊ N − e d g e ⌋ − ⌊ N ∗ 0.75 ⌋ + 1 )</p><p>according to the founded indexes of Step 18.</p><p>Step 20: find the number of groups in g c o m p a r i s o n 1 c of consecutive samples</p><p>equal to one and set this number to K3.</p><p>Step 21: find the length of those groups of consecutive samples equal to one</p><p>from Step 20 and hold them in the vector:</p><p>l e n g t h 1 c ( j ) ; for j = 1 , ⋯ , K 3</p><p>Step 22: find the start and end position of the founded groups from</p><p>Step 20 and hold them in the matrix:</p><p>p l a c e 1 c ( j , i ) ; for j = 1 , ⋯ , K 3 ; i = 1 , 2</p><p>Step 23: set n u m b e r 1 c = K 3</p><p>for j = 1 to K3</p><p>if l e n g t h 1 c ( j ) &lt; A 1 then</p><p>n u m b e r 1 c = n u m b e r 1 c − 1</p><p>for i = p l a c e 1 c ( j , 1 ) to p l a c e 1 c ( j , 2 )</p><p>g c o m p a r i s o n 1 c ( i ) = 0</p><p>end</p><p>end</p><p>end</p><p>Comparison to Average number 2:</p><p>Step 1: set g a v e r a g e 2 a = [ g ˜ ( e d g e ) , g ˜ ( e d g e + 1 ) , ⋯ , g ˜ ( ⌊ N ∗ 0.4 ⌋ ) ]</p><p>g a v e r a g e 2 b = [ g ˜ ( ⌊ N ∗ 0.6 ⌋ + 1 ) , g ˜ ( ⌊ N ∗ 0.6 ⌋ + 2 ) , ⋯ , g ˜ ( ⌊ N − e d g e ⌋ ) ]</p><p>Step 2: set l e n 2 a = ⌊ N ∗ 0.4 ⌋ − e d g e</p><p>l e n 2 b = ( ( N − e d g e ) ) − ( ⌊ N ∗ 0.6 ⌋ )</p><p>Step 3: set A v e r a g e n u m b e r   2 = [ g a v e r a g e 2 a l e n 2 a , g a v e r a g e 2 b l e n 2 b ]</p><p>Step 4: set g t e s t 2 a = [ g ˜ ( ⌊ N ∗ 0.24 ⌋ ) , g ˜ ( ⌊ N ∗ 0.24 ⌋ + 1 ) , ⋯ , g ˜ ( ⌊ N ∗ 0.35 ⌋ ) ]</p><p>Step 5: find the index or indexes where</p><p>( g t e s t 2 a &gt; 1.002 ∗ A v e r a g e n u m b e r   2 ( 1 ) ) is true and set those</p><p>indexes to i 1 , i 2 , i 3 , ⋯ , i ⌊ N ∗ 0.35 ⌋ − ⌊ N ∗ 0.24 ⌋ + 1</p><p>Step 6: set g c o m p a r i s o n 2 a ( i a ) = 1 ;</p><p>for a = 1 , 2 , 3 , ⋯ , ( ⌊ N ∗ 0.35 ⌋ − ⌊ N ∗ 0.24 ⌋ + 1 )</p><p>according to the founded indexes of Step 5.</p><p>Step 7: find the number of groups in g c o m p a r i s o n 2 a of consecutive samples</p><p>equal to one and set this number to K4.</p><p>Step 8: find the length of those groups of consecutive samples equal to one</p><p>from Step 7 and hold them in the vector:</p><p>l e n g t h 2 a ( j ) ; for j = 1 , ⋯ , K 4</p><p>Step 9: find the start and end position of the founded groups from</p><p>Step 7 and hold them in the matrix:</p><p>p l a c e 2 a ( j , i ) ; for j = 1 , ⋯ , K 4 ; i = 1 , 2</p><p>Step 10: set n u m b e r 2 a = K 4</p><p>A3 = 17, 48 and 129 for 1024, 2048 and 4096 length of sequence respectively.</p><p>for j = 1 to K4</p><p>if l e n g t h 2 a ( j ) &lt; A 3 then</p><p>n u m b e r 2 a = n u m b e r 2 a − 1</p><p>for i = p l a c e 2 a ( j , 1 ) to p l a c e 2 a ( j , 2 )</p><p>g c o m p a r i s o n 2 a ( i ) = 0</p><p>end</p><p>end</p><p>end</p><p>Step 11: set g t e s t 2 b = [ g ˜ ( ⌊ N ∗ 0.65 ⌋ ) , g ˜ ( ⌊ N ∗ 0.65 ⌋ + 1 ) , ⋯ , g ˜ ( ⌊ N ∗ 0.76 ⌋ ) ]</p><p>Step 12: find the index or indexes where</p><p>( g t e s t 2 b &gt; 1.002 ∗ A v e r a g e n u m b e r   2 ( 2 ) ) is true and set those indexes to i 1 , i 2 , i 3 , ⋯ , i ⌊ N ∗ 0.76 ⌋ − ⌊ N ∗ 0.65 ⌋ + 1</p><p>Step 13: set g c o m p a r i s o n 2 b ( i a ) = 1 ;</p><p>for a = 1 , 2 , 3 , ⋯ , ( ⌊ N ∗ 0.76 ⌋ − ⌊ N ∗ 0.65 ⌋ + 1 )</p><p>according to the founded indexes of Step 12.</p><p>Step 14: find the number of groups in g c o m p a r i s o n 2 b of consecutive samples</p><p>equal to one and set this number to K5.</p><p>Step 15: find the length of those groups of consecutive samples equal to one</p><p>from Step 14 and hold them in the vector:</p><p>l e n g t h 2 b ( j ) ; for j = 1 , ⋯ , K 5</p><p>Step 16: find the start and end position of the founded groups from</p><p>Step 14 and hold them in the matrix:</p><p>p l a c e 2 b ( j , i ) ; for j = 1 , ⋯ , K 5 ; i = 1 , 2</p><p>Step 17: set n u m b e r 2 b = K 5</p><p>for j = 1 to K5</p><p>if l e n g t h 2 b ( j ) &lt; A 3 then</p><p>n u m b e r 2 b = n u m b e r 2 b − 1</p><p>for i = p l a c e 2 b ( j , 1 ) to p l a c e 2 b ( j , 2 )</p><p>g c o m p a r i s o n 2 b ( i ) = 0</p><p>end</p><p>end</p><p>end</p><p>Comparison to Average number 3:</p><p>Step 1: set g a v e r a g e 3 a = [ g ˜ ( e d g e ) , g ˜ ( e d g e + 1 ) , ⋯ , g ˜ ( ⌊ N ∗ 0.25 ⌋ ) ]</p><p>g a v e r a g e 3 b = [ g ˜ ( ⌊ N ∗ 0.25 ⌋ + 1 ) , g ˜ ( ⌊ N ∗ 0.25 ⌋ + 2 ) , ⋯ , g ˜ ( ⌊ N ∗ 0.75 ⌋ ) ]</p><p>g a v e r a g e 3 c = [ g ˜ ( ⌊ N ∗ 0.75 ⌋ + 1 ) , g ˜ ( ⌊ N ∗ 0.75 ⌋ + 2 ) , ⋯ , g ˜ ( ⌊ N − e d g e ⌋ ) ]</p><p>Step 2: set l e n 3 a = ( ⌊ N ∗ 0.25 ⌋ ) − e d g e</p><p>l e n 3 b = ( ⌊ N ∗ 0.75 ⌋ ) − ( ⌊ N ∗ 0.25 ⌋ )</p><p>l e n 3 c = ( ( N − e d g e ) ) − ( ⌊ N ∗ 0.75 ⌋ )</p><p>Step 3: set A v e r a g e n u m b e r   3 = [ g a v e r a g e 3 a l e n 3 a , g a v e r a g e 3 b l e n 3 b , g a v e r a g e 3 c l e n 3 c ]</p><p>Step 4: set g t e s t 3 a = [ g ˜ ( ⌊ N ∗ 0.34 ⌋ ) , g ˜ ( ⌊ N ∗ 0.34 ⌋ + 1 ) , ⋯ , g ˜ ( ⌊ N ∗ 0.45 ⌋ ) ]</p><p>Step 5: find the index or indexes where ( g t e s t 3 a &gt; A v e r a g e n u m b e r   3 ( 1 ) )</p><p>is true and set those indexes to i 1 , i 2 , i 3 , ⋯ , i ⌊ N ∗ 0.45 ⌋ − ⌊ N ∗ 0.34 ⌋ + 1</p><p>Step 6: set g c o m p a r i s o n 3 a ( i a ) = 1 ;</p><p>for a = 1 , 2 , 3 , ⋯ , ( ⌊ N ∗ 0.45 ⌋ − ⌊ N ∗ 0.34 ⌋ + 1 )</p><p>according to the founded indexes of Step 5.</p><p>Step 7: find the number of groups in g c o m p a r i s o n 3 a of consecutive samples</p><p>equal to one and set this number to K6.</p><p>Step 8: find the length of those groups of consecutive samples equal to one</p><p>from Step 7 and hold them in the vector:</p><p>l e n g t h 3 a ( j ) ; for j = 1 , ⋯ , K 6</p><p>Step 9: find the start and end position of the founded groups from</p><p>Step 7 and hold them in the matrix:</p><p>p l a c e 3 a ( j , i ) ; for j = 1 , ⋯ , K 6 ; i = 1 , 2</p><p>Step 10: set n u m b e r 3 a = K 6</p><p>for j = 1 to K6</p><p>if l e n g t h 3 a ( j ) &lt; A 3 then</p><p>n u m b e r 3 a = n u m b e r 3 a − 1</p><p>for i = p l a c e 3 a ( j , 1 ) to p l a c e 3 a ( j , 2 )</p><p>g c o m p a r i s o n 3 a ( i ) = 0</p><p>end</p><p>end</p><p>end</p><p>Step 11: set g t e s t 3 b = [ g ˜ ( ⌊ N ∗ 0.55 ⌋ ) , g ˜ ( ⌊ N ∗ 0.55 ⌋ + 1 ) , ⋯ , g ˜ ( ⌊ N ∗ 0.66 ⌋ ) ]</p><p>Step 12: find the index or indexes where ( g t e s t 3 b &gt; A v e r a g e n u m b e r   3 ( 3 ) )</p><p>is true and set those indexes to i 1 , i 2 , i 3 , ⋯ , i ⌊ N ∗ 0.66 ⌋ − ⌊ N ∗ 0.55 ⌋ + 1</p><p>Step 13: set g c o m p a r i s o n 3 b ( i a ) = 1 ;</p><p>for a = 1 , 2 , 3 , ⋯ , ( ⌊ N ∗ 0.66 ⌋ − ⌊ N ∗ 0.55 ⌋ + 1 )</p><p>according to the founded indexes of Step 12.</p><p>Step 14: find the number of groups in g c o m p a r i s o n 3 b of consecutive samples</p><p>equal to one and set this number to K7.</p><p>Step 15: find the length of those groups of consecutive samples equal to one</p><p>from Step 14 and hold them in the vector:</p><p>l e n g t h 3 b ( j ) ; for j = 1 , ⋯ , K 7</p><p>Step 16: find the start and end position of the founded groups from</p><p>Step 14 and hold them in the matrix:</p><p>p l a c e 3 b ( j , i ) ; for j = 1 , ⋯ , K 7 ; i = 1 , 2</p><p>Step 17: set n u m b e r 3 b = K 7</p><p>for j = 1 to K7</p><p>if l e n g t h 3 b ( j ) &lt; A 3 then</p><p>n u m b e r 3 b = n u m b e r 3 b − 1</p><p>for i = p l a c e 3 b ( j , 1 ) to p l a c e 3 b ( j , 2 )</p><p>g c o m p a r i s o n 3 b ( i ) = 0</p><p>end</p><p>end</p><p>end</p><p>Step 18: set g t e s t 3 c = [ g ˜ ( ⌊ N ∗ 0.45 ⌋ ) , g ˜ ( ⌊ N ∗ 0.45 ⌋ + 1 ) , ⋯ , g ˜ ( ⌊ N ∗ 0.55 ⌋ ) ]</p><p>Step 19: find the index or indexes where</p><p>( g t e s t 3 c &gt; 1.05 ∗ A v e r a g e n u m b e r   3 ( 2 ) )</p><p>is true and set those indexes to i 1 , i 2 , i 3 , ⋯ , i ⌊ N ∗ 0.55 ⌋ − ⌊ N ∗ 0.45 ⌋ + 1</p><p>Step 20: set g c o m p a r i s o n 3 c ( i a ) = 1 ;</p><p>for a = 1 , 2 , 3 , ⋯ , ( ⌊ N ∗ 0.55 ⌋ − ⌊ N ∗ 0.45 ⌋ + 1 )</p><p>according to the founded indexes of Step 19.</p><p>Step 21: find the number of groups in g c o m p a r i s o n 3 c of consecutive samples</p><p>equal to one and set this number to K8.</p><p>Step 22: find the length of those groups of consecutive samples equal to one</p><p>from Step 21 and hold them in the vector:</p><p>l e n g t h 3 c ( j ) ; for j = 1 , ⋯ , K 8</p><p>Step 23: find the start and end position of the founded groups from</p><p>Step 21 and hold them in the matrix:</p><p>p l a c e 3 c ( j , i ) ; for j = 1 , ⋯ , K 8 ; i = 1 , 2</p><p>Step 24:</p><p>A4 = 9, 15 and 63 for 1024, 2048 and 4096 length of sequence respectively.</p><p>for j = 1 to K8</p><p>if l e n g t h 3 c ( j ) &lt; A 4 then</p><p>n u m b e r 3 c = n u m b e r 3 c − 1</p><p>for i = p l a c e 3 c ( j , 1 ) to p l a c e 3 c ( j , 2 )</p><p>g c o m p a r i s o n 3 c ( i ) = 0</p><p>end</p><p>end</p><p>end</p><p>Fine tuning on the above obtained results:</p><p>The algorithm has also false alarms at the stage of marking the suspected parts as periodic. Therefore, there is a mechanism which deletes some of the false alarms which is described in the following.</p><p>Step 1: if ( n u m b e r 1 a = = 1 ) &amp; ( n u m b e r 1 c &gt; 1 ) then</p><p>g c o m p a r i s o n 1 a = 0</p><p>end</p><p>Step 2: if ( n u m b e r 1 a &gt; 1 ) &amp; ( n u m b e r 1 c = = 1 ) then</p><p>g c o m p a r i s o n 1 c = 0</p><p>end</p><p>Step 3: if ( n u m b e r 2 a = = 1 ) &amp; ( n u m b e r 2 b &gt; 1 ) then</p><p>g c o m p a r i s o n 2 a = 0</p><p>end</p><p>Step 4: if ( n u m b e r 2 a &gt; 1 ) &amp; ( n u m b e r 2 b = = 1 ) then</p><p>g c o m p a r i s o n 2 b = 0</p><p>end</p><p>Step 5: if ( n u m b e r 3 a &gt; 0 ) or ( n u m b e r 3 b &gt; 0 ) then</p><p>g c o m p a r i s o n 3 c = 0</p><p>end</p><p>The last stage is to connect all the vectors with the suspicious locations as a periodic part to one outcome vector.</p><p>Step 6: Initialize the following vectors with zeros of length N:</p><p>g c o m p a r i s o n 1 a * , g c o m p a r i s o n 1 b * , g c o m p a r i s o n 1 c * , g c o m p a r i s o n 2 a * , g c o m p a r i s o n 2 b * , g c o m p a r i s o n 3 a * , g c o m p a r i s o n 3 b * , g c o m p a r i s o n 3 c * .</p><p>Step 7: Arrange the values in the vectors</p><p>g c o m p a r i s o n 1 a , g c o m p a r i s o n 1 b , g c o m p a r i s o n 1 c g c o m p a r i s o n 2 a , g c o m p a r i s o n 2 b , g c o m p a r i s o n 3 a , g c o m p a r i s o n 3 b , g c o m p a r i s o n 3 c</p><p>to their position in the original vector g ˜ [ n ] by using the vectors from</p><p>Step 6.</p><p>g c o m p a r i s o n 1 a * ( i + e d g e ) = g c o m p a r i s o n 1 a ( i ) ;</p><p>for i = 1 , 2 , ⋯ , l e n g t h ( g c o m p a r i s o n 1 a )</p><p>g c o m p a r i s o n 1 b * ( i + ⌊ N ∗ 0.45 ⌋ ) = g c o m p a r i s o n 1 b ( i ) ;</p><p>for i = 1 , 2 , ⋯ , l e n g t h ( g c o m p a r i s o n 1 b )</p><p>g c o m p a r i s o n 1 c * ( i + ⌊ N ∗ 0.75 ⌋ ) = g c o m p a r i s o n 1 c ( i ) ;</p><p>for i = 1 , 2 , ⋯ , l e n g t h ( g c o m p a r i s o n 1 c )</p><p>g c o m p a r i s o n 2 a * ( i + ⌊ N ∗ 0.24 ⌋ ) = g c o m p a r i s o n 2 a ( i ) ;</p><p>for i = 1 , 2 , ⋯ , l e n g t h ( g c o m p a r i s o n 2 a )</p><p>g c o m p a r i s o n 2 b * ( i + ⌊ N ∗ 0.65 ⌋ ) = g c o m p a r i s o n 2 b ( i ) ;</p><p>for i = 1 , 2 , ⋯ , l e n g t h ( g c o m p a r i s o n 2 b )</p><p>g c o m p a r i s o n 3 a * ( i + ⌊ N ∗ 0.34 ⌋ ) = g c o m p a r i s o n 3 a ( i ) ;</p><p>for i = 1 , 2 , ⋯ , l e n g t h ( g c o m p a r i s o n 3 a )</p><p>g c o m p a r i s o n 3 b * ( i + ⌊ N ∗ 0.54 ⌋ ) = g c o m p a r i s o n 3 b ( i ) ;</p><p>for i = 1 , 2 , ⋯ , l e n g t h ( g c o m p a r i s o n 3 b )</p><p>g c o m p a r i s o n 3 c * ( i + ⌊ N ∗ 0.45 ⌋ ) = g c o m p a r i s o n 3 c ( i ) ;</p><p>for i = 1 , 2 , ⋯ , l e n g t h ( g c o m p a r i s o n 3 c )</p><p>Step 8: Obtain one output vector which holds the suspicious places in g ˜ [ n ] .</p><p>s u s p i c i o u s _ p l a c e s [ n ] = g c o m p a r i s o n 1 a * + g c o m p a r i s o n 1 b * + g c o m p a r i s o n 1 c * + g c o m p a r i s o n 2 a *       + g c o m p a r i s o n 2 b * + g c o m p a r i s o n 3 a * + g c o m p a r i s o n 3 b * + g c o m p a r i s o n 3 c * .</p></sec><sec id="s5"><title>5. Simulation</title><p>Wigner Test Vs DFT NIST Test</p><p>In this section we first show the simulation results (<xref ref-type="table" rid="table2">Table 2</xref>) using the Wigner test (the test with the four parameters “Power”, “Distance”, “Density” and “Highest”) for identifying if the tested input sequence is a random sequence or not, compared to those obtained with the DFT test from NIST [<xref ref-type="bibr" rid="scirp.107532-ref18">18</xref>]. For this purpose, eight sequences were applied with different number of cycles, with different cycle length and segment position of the cyclic part in the tested sequence. Each structure was tested with a sequence length of 1024, 2048 and 4096 (please refer to Section III where we have already presented the results for the Wigner test and where the tested sequences were defined). According to <xref ref-type="table" rid="table2">Table 2</xref>, the DFT test from NIST [<xref ref-type="bibr" rid="scirp.107532-ref18">18</xref>], does not detect in most cases that the non-stationary input sequence is not a random sequence, while the Wigner test (the test with the four parameters “Power”, “Distance”, “Density” and “Highest”) supplies in most cases the right answer. Please note that in <xref ref-type="table" rid="table2">Table 2</xref> the red colored values are the indices that classify the sequence as non-random.</p><p>New Test Vs NIST Tests</p><p>It should be pointed out that the tested input sequences used for generating the results in <xref ref-type="table" rid="table2">Table 2</xref> are sequences with a high periodicity within the sequence or have a high length of a repetitive sequence. For this case, the Wigner test (the test with the four parameters “Power”, “Distance”, “Density” and “Highest”) is enough for declaring if the tested input sequence is random or not random. But, for sequences with a low periodicity within the sequence the GGD function [<xref ref-type="bibr" rid="scirp.107532-ref28">28</xref>] [<xref ref-type="bibr" rid="scirp.107532-ref29">29</xref>] is needed. In the following, we denote as the “New test” our new proposed method as described in the previous section and described in <xref ref-type="fig" rid="fig7">Figure 7</xref> containing the Wigner and the GDD functions [<xref ref-type="bibr" rid="scirp.107532-ref27">27</xref>] [<xref ref-type="bibr" rid="scirp.107532-ref28">28</xref>] [<xref ref-type="bibr" rid="scirp.107532-ref29">29</xref>].</p><p><xref ref-type="table" rid="table3">Table 3</xref> shows a summary of results obtained by the NIST tests number 1, 2, 3, 6, 7 and 8 [<xref ref-type="bibr" rid="scirp.107532-ref18">18</xref>] and by the “New test” algorithm for low-periodic input sequences (2 periods in a signal) and input sequences having a short periodic segment length (100 - 170 samples of a periodic segment length out of 1024 samples). It can be clearly seen from <xref ref-type="table" rid="table3">Table 3</xref>, that in most cases the “New test” classifies the incoming sequence as non-random as it should, while the opposite is true for the NIST tests number 1, 2, 3, 6, 7 and 8 [<xref ref-type="bibr" rid="scirp.107532-ref18">18</xref>].</p><table-wrap id="table2" ><label><xref ref-type="table" rid="table2">Table 2</xref></label><caption><title> Comparison between the DFT test to Wigner</title></caption><table><tbody><thead><tr><th align="center" valign="middle"  rowspan="2"  ></th><th align="center" valign="middle"  rowspan="2"  >Length of sequence</th><th align="center" valign="middle"  colspan="5"  >Wigner</th><th align="center" valign="middle"  colspan="2"  >DFT</th></tr></thead><tr><td align="center" valign="middle" >Power</td><td align="center" valign="middle" >Distance</td><td align="center" valign="middle" >Density</td><td align="center" valign="middle" >Highest</td><td align="center" valign="middle" >Random</td><td align="center" valign="middle" >P value</td><td align="center" valign="middle" >Random</td></tr><tr><td align="center" valign="middle" >1</td><td align="center" valign="middle" >1024</td><td align="center" valign="middle" >0.9 - 1</td><td align="center" valign="middle" >0.78</td><td align="center" valign="middle" >0.51</td><td align="center" valign="middle" >1208</td><td align="center" valign="middle" >no</td><td align="center" valign="middle" >1.2e-04</td><td align="center" valign="middle" >no</td></tr><tr><td align="center" valign="middle" >2</td><td align="center" valign="middle" >1024</td><td align="center" valign="middle" >0.9 - 1</td><td align="center" valign="middle" >0.72</td><td align="center" valign="middle" >0.56</td><td align="center" valign="middle" >3611</td><td align="center" valign="middle" >no</td><td align="center" valign="middle" ></td><td align="center" valign="middle" >yes</td></tr><tr><td align="center" valign="middle" >3</td><td align="center" valign="middle" >1024</td><td align="center" valign="middle" >0.8 - 0.9</td><td align="center" valign="middle" >0.3</td><td align="center" valign="middle" >0.78</td><td align="center" valign="middle" >18</td><td align="center" valign="middle" >no</td><td align="center" valign="middle" >0.4559</td><td align="center" valign="middle" >yes</td></tr><tr><td align="center" valign="middle" >4</td><td align="center" valign="middle" >1024</td><td align="center" valign="middle" >0.7 - 0.8</td><td align="center" valign="middle" >0.25</td><td align="center" valign="middle" >0.88</td><td align="center" valign="middle" >6</td><td align="center" valign="middle" >yes</td><td align="center" valign="middle" >0.6464</td><td align="center" valign="middle" >yes</td></tr><tr><td align="center" valign="middle" >5</td><td align="center" valign="middle" >1024</td><td align="center" valign="middle" >0.8 - 0.9</td><td align="center" valign="middle" >0.39</td><td align="center" valign="middle" >0.79</td><td align="center" valign="middle" >19</td><td align="center" valign="middle" >no</td><td align="center" valign="middle" >0.4913</td><td align="center" valign="middle" >yes</td></tr><tr><td align="center" valign="middle" >6</td><td align="center" valign="middle" >1024</td><td align="center" valign="middle" >0.7 - 0.8</td><td align="center" valign="middle" >0.3</td><td align="center" valign="middle" >0.9</td><td align="center" valign="middle" >19</td><td align="center" valign="middle" >no</td><td align="center" valign="middle" >0.4913</td><td align="center" valign="middle" >yes</td></tr><tr><td align="center" valign="middle" >7</td><td align="center" valign="middle" >1024</td><td align="center" valign="middle" >0.9 - 1</td><td align="center" valign="middle" >0.47</td><td align="center" valign="middle" >0.83</td><td align="center" valign="middle" >36</td><td align="center" valign="middle" >no</td><td align="center" valign="middle" >0.6881</td><td align="center" valign="middle" >yes</td></tr><tr><td align="center" valign="middle" >8</td><td align="center" valign="middle" >1024</td><td align="center" valign="middle" >0.9 - 1</td><td align="center" valign="middle" >0.44</td><td align="center" valign="middle" >0.76</td><td align="center" valign="middle" >33</td><td align="center" valign="middle" >no</td><td align="center" valign="middle" >0.0665</td><td align="center" valign="middle" >yes</td></tr><tr><td align="center" valign="middle" >9</td><td align="center" valign="middle" >2048</td><td align="center" valign="middle" >0.9 - 1</td><td align="center" valign="middle" >0.75</td><td align="center" valign="middle" >0.6</td><td align="center" valign="middle" >3282</td><td align="center" valign="middle" >no</td><td align="center" valign="middle" >7.2e-12</td><td align="center" valign="middle" >no</td></tr><tr><td align="center" valign="middle" >10</td><td align="center" valign="middle" >2048</td><td align="center" valign="middle" >0.9 - 1</td><td align="center" valign="middle" >0.8</td><td align="center" valign="middle" >0.5</td><td align="center" valign="middle" >9182</td><td align="center" valign="middle" >no</td><td align="center" valign="middle" >0.7151</td><td align="center" valign="middle" >yes</td></tr><tr><td align="center" valign="middle" >11</td><td align="center" valign="middle" >2048</td><td align="center" valign="middle" >0.7 - 0.8</td><td align="center" valign="middle" >0.22</td><td align="center" valign="middle" >0.77</td><td align="center" valign="middle" >13</td><td align="center" valign="middle" >no</td><td align="center" valign="middle" >0.6881</td><td align="center" valign="middle" >yes</td></tr><tr><td align="center" valign="middle" >12</td><td align="center" valign="middle" >2048</td><td align="center" valign="middle" >0.7 - 0.8</td><td align="center" valign="middle" >0.26</td><td align="center" valign="middle" >0.61</td><td align="center" valign="middle" >7</td><td align="center" valign="middle" >no</td><td align="center" valign="middle" >0.1215</td><td align="center" valign="middle" >yes</td></tr><tr><td align="center" valign="middle" >13</td><td align="center" valign="middle" >2048</td><td align="center" valign="middle" >0.9 - 1</td><td align="center" valign="middle" >0.29</td><td align="center" valign="middle" >0.91</td><td align="center" valign="middle" >48</td><td align="center" valign="middle" >no</td><td align="center" valign="middle" >0.207</td><td align="center" valign="middle" >yes</td></tr><tr><td align="center" valign="middle" >14</td><td align="center" valign="middle" >2048</td><td align="center" valign="middle" >0.7 - 0.8</td><td align="center" valign="middle" >0.3</td><td align="center" valign="middle" >0.91</td><td align="center" valign="middle" >13</td><td align="center" valign="middle" >yes</td><td align="center" valign="middle" >0.3304</td><td align="center" valign="middle" >yes</td></tr><tr><td align="center" valign="middle" >15</td><td align="center" valign="middle" >2048</td><td align="center" valign="middle" >0.9 - 1</td><td align="center" valign="middle" >0.4</td><td align="center" valign="middle" >0.84</td><td align="center" valign="middle" >43</td><td align="center" valign="middle" >no</td><td align="center" valign="middle" >0.0027</td><td align="center" valign="middle" >no</td></tr><tr><td align="center" valign="middle" >16</td><td align="center" valign="middle" >2048</td><td align="center" valign="middle" >0.9 - 1</td><td align="center" valign="middle" >0.4</td><td align="center" valign="middle" >0.8</td><td align="center" valign="middle" >51</td><td align="center" valign="middle" >no</td><td align="center" valign="middle" >0.0167</td><td align="center" valign="middle" >yes</td></tr><tr><td align="center" valign="middle" >17</td><td align="center" valign="middle" >4096</td><td align="center" valign="middle" >0.9 - 1</td><td align="center" valign="middle" >0.83</td><td align="center" valign="middle" >0.62</td><td align="center" valign="middle" >6346</td><td align="center" valign="middle" >no</td><td align="center" valign="middle" >1.3e-21</td><td align="center" valign="middle" >no</td></tr><tr><td align="center" valign="middle" >18</td><td align="center" valign="middle" >4096</td><td align="center" valign="middle" >0.9 - 1</td><td align="center" valign="middle" >0.7</td><td align="center" valign="middle" >0.51</td><td align="center" valign="middle" >24,527</td><td align="center" valign="middle" >no</td><td align="center" valign="middle" >0.5281</td><td align="center" valign="middle" >yes</td></tr><tr><td align="center" valign="middle" >19</td><td align="center" valign="middle" >4096</td><td align="center" valign="middle" >0.7 - 0.8</td><td align="center" valign="middle" >0.25</td><td align="center" valign="middle" >0.72</td><td align="center" valign="middle" >4</td><td align="center" valign="middle" >no</td><td align="center" valign="middle" >0.1687</td><td align="center" valign="middle" >yes</td></tr><tr><td align="center" valign="middle" >20</td><td align="center" valign="middle" >4096</td><td align="center" valign="middle" >0.7 - 0.8</td><td align="center" valign="middle" >0.3</td><td align="center" valign="middle" >0.6</td><td align="center" valign="middle" >11</td><td align="center" valign="middle" >no</td><td align="center" valign="middle" >0.0031</td><td align="center" valign="middle" >no</td></tr><tr><td align="center" valign="middle" >21</td><td align="center" valign="middle" >4096</td><td align="center" valign="middle" >0.9 - 1</td><td align="center" valign="middle" >0.42</td><td align="center" valign="middle" >0.92</td><td align="center" valign="middle" >84</td><td align="center" valign="middle" >no</td><td align="center" valign="middle" >0.2758</td><td align="center" valign="middle" >yes</td></tr><tr><td align="center" valign="middle" >22</td><td align="center" valign="middle" >4096</td><td align="center" valign="middle" >0.7 - 0.8</td><td align="center" valign="middle" >0.35</td><td align="center" valign="middle" >0.93</td><td align="center" valign="middle" >19</td><td align="center" valign="middle" >no</td><td align="center" valign="middle" >0.0963</td><td align="center" valign="middle" >yes</td></tr><tr><td align="center" valign="middle" >23</td><td align="center" valign="middle" >4096</td><td align="center" valign="middle" >0.9 - 1</td><td align="center" valign="middle" >0.48</td><td align="center" valign="middle" >0.84</td><td align="center" valign="middle" >96</td><td align="center" valign="middle" >no</td><td align="center" valign="middle" >0.002</td><td align="center" valign="middle" >no</td></tr><tr><td align="center" valign="middle" >24</td><td align="center" valign="middle" >4096</td><td align="center" valign="middle" >0.9 - 1</td><td align="center" valign="middle" >0.52</td><td align="center" valign="middle" >0.81</td><td align="center" valign="middle" >124</td><td align="center" valign="middle" >no</td><td align="center" valign="middle" >0.2175</td><td align="center" valign="middle" >yes</td></tr></tbody></table></table-wrap><table-wrap-group id="3"><label><xref ref-type="table" rid="table3">Table 3</xref></label><caption><title> Comparison of NIST test results with the “New test”</title></caption><table-wrap id="3_1"><table><tbody><thead><tr><th align="center" valign="middle" >Test 8 NIST</th><th align="center" valign="middle" >Test 7 NIST</th><th align="center" valign="middle" >Test 6 NIST</th><th align="center" valign="middle" >Test 3 NIST</th><th align="center" valign="middle" >Test 2 NIST</th><th align="center" valign="middle" >Test 1 NIST</th><th align="center" valign="middle" >NIST test</th><th align="center" valign="middle" >New test</th><th align="center" valign="middle" >Structure</th></tr></thead><tr><td align="center" valign="middle" >0.0733</td><td align="center" valign="middle" >-</td><td align="center" valign="middle" >0.4913</td><td align="center" valign="middle" >0.348</td><td align="center" valign="middle" >0.518</td><td align="center" valign="middle" >0.95</td><td align="center" valign="middle" >Non random</td><td align="center" valign="middle" >Non random</td><td align="center" valign="middle"  rowspan="2"  >Structure number 1</td></tr><tr><td align="center" valign="middle" >0.364</td><td align="center" valign="middle" >0.341</td><td align="center" valign="middle" >0.491</td><td align="center" valign="middle" >0.144</td><td align="center" valign="middle" >0.556</td><td align="center" valign="middle" >0.26</td><td align="center" valign="middle" >Random</td><td align="center" valign="middle" >Non random</td></tr></tbody></table></table-wrap><table-wrap id="3_2"><table><tbody><thead><tr><th align="center" valign="middle" >0.837</th><th align="center" valign="middle" >0.916</th><th align="center" valign="middle" >0.122</th><th align="center" valign="middle" >0.231</th><th align="center" valign="middle" >0.34</th><th align="center" valign="middle" >0.189</th><th align="center" valign="middle" >Random</th><th align="center" valign="middle" >Non random</th><th align="center" valign="middle"  rowspan="3"  ></th></tr></thead><tr><td align="center" valign="middle" >0.122</td><td align="center" valign="middle" >-</td><td align="center" valign="middle" >0.067</td><td align="center" valign="middle" >0.537</td><td align="center" valign="middle" >0.804</td><td align="center" valign="middle" >0.189</td><td align="center" valign="middle" >Non random</td><td align="center" valign="middle" >Non random</td></tr><tr><td align="center" valign="middle" >0.102</td><td align="center" valign="middle" >0.409</td><td align="center" valign="middle" >0.122</td><td align="center" valign="middle" >0.799</td><td align="center" valign="middle" >0.367</td><td align="center" valign="middle" >0.169</td><td align="center" valign="middle" >Random</td><td align="center" valign="middle" >Non random</td></tr><tr><td align="center" valign="middle" >0.17</td><td align="center" valign="middle" >-</td><td align="center" valign="middle" >0.067</td><td align="center" valign="middle" >0.047</td><td align="center" valign="middle" >0.197</td><td align="center" valign="middle" >0.104</td><td align="center" valign="middle" >Non random</td><td align="center" valign="middle" >Non random</td><td align="center" valign="middle"  rowspan="5"  >Structure number 2</td></tr><tr><td align="center" valign="middle" >0.793</td><td align="center" valign="middle" >0.372</td><td align="center" valign="middle" >0.688</td><td align="center" valign="middle" >0.575</td><td align="center" valign="middle" >0.932</td><td align="center" valign="middle" >0.803</td><td align="center" valign="middle" >Random</td><td align="center" valign="middle" >Non random</td></tr><tr><td align="center" valign="middle" >0.045</td><td align="center" valign="middle" >0.553</td><td align="center" valign="middle" >0.6881</td><td align="center" valign="middle" >0.0541</td><td align="center" valign="middle" >0.258</td><td align="center" valign="middle" >0.532</td><td align="center" valign="middle" >Random</td><td align="center" valign="middle" >Non random</td></tr><tr><td align="center" valign="middle" >0.145</td><td align="center" valign="middle" >-</td><td align="center" valign="middle" >0.207</td><td align="center" valign="middle" >0.552</td><td align="center" valign="middle" >0.709</td><td align="center" valign="middle" >0.317</td><td align="center" valign="middle" >Non random</td><td align="center" valign="middle" >Non random</td></tr><tr><td align="center" valign="middle" >0.095</td><td align="center" valign="middle" >0.538</td><td align="center" valign="middle" >0.646</td><td align="center" valign="middle" >0.42</td><td align="center" valign="middle" >0.403</td><td align="center" valign="middle" >0.137</td><td align="center" valign="middle" >Random</td><td align="center" valign="middle" >Non random</td></tr><tr><td align="center" valign="middle" >0.865</td><td align="center" valign="middle" >0.145</td><td align="center" valign="middle" >0.329</td><td align="center" valign="middle" >0.629</td><td align="center" valign="middle" >0.834</td><td align="center" valign="middle" >0.453</td><td align="center" valign="middle" >Random</td><td align="center" valign="middle" >Non random</td><td align="center" valign="middle"  rowspan="5"  >Structure number 3</td></tr><tr><td align="center" valign="middle" >0.016</td><td align="center" valign="middle" >-</td><td align="center" valign="middle" >0.909</td><td align="center" valign="middle" >0.247</td><td align="center" valign="middle" >0.598</td><td align="center" valign="middle" >0.317</td><td align="center" valign="middle" >Non random</td><td align="center" valign="middle" >Non random</td></tr><tr><td align="center" valign="middle" >0.736</td><td align="center" valign="middle" >0.752</td><td align="center" valign="middle" >0.207</td><td align="center" valign="middle" >0.163</td><td align="center" valign="middle" >0.559</td><td align="center" valign="middle" >0.608</td><td align="center" valign="middle" >Random</td><td align="center" valign="middle" >Non random</td></tr><tr><td align="center" valign="middle" >0.689</td><td align="center" valign="middle" >-</td><td align="center" valign="middle" >0.0665</td><td align="center" valign="middle" >0.912</td><td align="center" valign="middle" >0.223</td><td align="center" valign="middle" >0.492</td><td align="center" valign="middle" >Non random</td><td align="center" valign="middle" >Non random</td></tr><tr><td align="center" valign="middle" >-</td><td align="center" valign="middle" >-</td><td align="center" valign="middle" >0.908</td><td align="center" valign="middle" >0.617</td><td align="center" valign="middle" >0.993</td><td align="center" valign="middle" >0.95</td><td align="center" valign="middle" >Non random</td><td align="center" valign="middle" >Non random</td></tr><tr><td align="center" valign="middle" >0.865</td><td align="center" valign="middle" >0.081</td><td align="center" valign="middle" >0.491</td><td align="center" valign="middle" >0.497</td><td align="center" valign="middle" >0.836</td><td align="center" valign="middle" >0.617</td><td align="center" valign="middle" >Random</td><td align="center" valign="middle" >Non random</td><td align="center" valign="middle"  rowspan="5"  >Structure number 4</td></tr><tr><td align="center" valign="middle" >0.167</td><td align="center" valign="middle" >0.123</td><td align="center" valign="middle" >0.456</td><td align="center" valign="middle" >0.667</td><td align="center" valign="middle" >0.945</td><td align="center" valign="middle" >0.617</td><td align="center" valign="middle" >Random</td><td align="center" valign="middle" >Non random</td></tr><tr><td align="center" valign="middle" >0.736</td><td align="center" valign="middle" >-</td><td align="center" valign="middle" >0.207</td><td align="center" valign="middle" >0.855</td><td align="center" valign="middle" >0.634</td><td align="center" valign="middle" >0.708</td><td align="center" valign="middle" >Non random</td><td align="center" valign="middle" >Non random</td></tr><tr><td align="center" valign="middle" >0.576</td><td align="center" valign="middle" >0.458</td><td align="center" valign="middle" >0.688</td><td align="center" valign="middle" >0.255</td><td align="center" valign="middle" >0.879</td><td align="center" valign="middle" >0.532</td><td align="center" valign="middle" >Random</td><td align="center" valign="middle" >Random</td></tr><tr><td align="center" valign="middle" >0.322</td><td align="center" valign="middle" >0.301</td><td align="center" valign="middle" >0.688</td><td align="center" valign="middle" >0.193</td><td align="center" valign="middle" >0.655</td><td align="center" valign="middle" >0.118</td><td align="center" valign="middle" >Random</td><td align="center" valign="middle" >Non random</td></tr><tr><td align="center" valign="middle" >0.859</td><td align="center" valign="middle" >-</td><td align="center" valign="middle" >0.456</td><td align="center" valign="middle" >-</td><td align="center" valign="middle" >0.644</td><td align="center" valign="middle" >0.851</td><td align="center" valign="middle" >Non random</td><td align="center" valign="middle" >Random</td><td align="center" valign="middle"  rowspan="5"  >Structure number 5</td></tr><tr><td align="center" valign="middle" >0.593</td><td align="center" valign="middle" >-</td><td align="center" valign="middle" >0.1215</td><td align="center" valign="middle" >-</td><td align="center" valign="middle" >0.056</td><td align="center" valign="middle" >0.317</td><td align="center" valign="middle" >Non random</td><td align="center" valign="middle" >Non random</td></tr><tr><td align="center" valign="middle" >0.767</td><td align="center" valign="middle" >0.196</td><td align="center" valign="middle" >0.688</td><td align="center" valign="middle" >0.418</td><td align="center" valign="middle" >0.489</td><td align="center" valign="middle" >0.169</td><td align="center" valign="middle" >Random</td><td align="center" valign="middle" >Non random</td></tr><tr><td align="center" valign="middle" >0.349</td><td align="center" valign="middle" >0.752</td><td align="center" valign="middle" >0.491</td><td align="center" valign="middle" >0.254</td><td align="center" valign="middle" >0.289</td><td align="center" valign="middle" >0.211</td><td align="center" valign="middle" >Random</td><td align="center" valign="middle" >Non random</td></tr><tr><td align="center" valign="middle" >0.72</td><td align="center" valign="middle" >0.659</td><td align="center" valign="middle" >0.329</td><td align="center" valign="middle" >0.094</td><td align="center" valign="middle" >0.984</td><td align="center" valign="middle" >0.492</td><td align="center" valign="middle" >Random</td><td align="center" valign="middle" >Non random</td></tr><tr><td align="center" valign="middle" >0.409</td><td align="center" valign="middle" >0.538</td><td align="center" valign="middle" >0.646</td><td align="center" valign="middle" >0.803</td><td align="center" valign="middle" >0.997</td><td align="center" valign="middle" >1</td><td align="center" valign="middle" >Random</td><td align="center" valign="middle" >Non random</td><td align="center" valign="middle"  rowspan="5"  >Structure number 6</td></tr><tr><td align="center" valign="middle" >0.647</td><td align="center" valign="middle" >0.107</td><td align="center" valign="middle" >0.909</td><td align="center" valign="middle" >0.951</td><td align="center" valign="middle" >0.827</td><td align="center" valign="middle" >0.901</td><td align="center" valign="middle" >Random</td><td align="center" valign="middle" >Random</td></tr><tr><td align="center" valign="middle" >0.239</td><td align="center" valign="middle" >0.752</td><td align="center" valign="middle" >0.122</td><td align="center" valign="middle" >0.19</td><td align="center" valign="middle" >0.308</td><td align="center" valign="middle" >0.754</td><td align="center" valign="middle" >Random</td><td align="center" valign="middle" >Non random</td></tr><tr><td align="center" valign="middle" >0.249</td><td align="center" valign="middle" >0.288</td><td align="center" valign="middle" >0.329</td><td align="center" valign="middle" >0.144</td><td align="center" valign="middle" >0.197</td><td align="center" valign="middle" >0.382</td><td align="center" valign="middle" >Random</td><td align="center" valign="middle" >Non random</td></tr><tr><td align="center" valign="middle" >0.593</td><td align="center" valign="middle" >0.597</td><td align="center" valign="middle" >0.688</td><td align="center" valign="middle" >0.436</td><td align="center" valign="middle" >0.912</td><td align="center" valign="middle" >0.249</td><td align="center" valign="middle" >Random</td><td align="center" valign="middle" >Non random</td></tr></tbody></table></table-wrap></table-wrap-group><p>The sequences structure:</p><p>Structure number 1: 128, 320, 128, 320, 128.</p><p>Structure number 2: 150, 170, 384, 170, 150.</p><p>Structure number 3: 100, 824, 100.</p><p>Structure number 4: 50, 924, 50.</p><p>Structure number 5: 200, 100, 324, 100, 300.</p><p>Structure number 6: 312, 100, 200, 100, 312.</p><p>(The number marked in red marks the periodic part in the sequence.)</p><p>Simulation results—Random or Non-random:</p><p>Simulation results—Estimating the Random places:</p><p>Next, we compare the simulated results obtained from our new algorithm “New test” to those obtained by the 15 tests from NIST [<xref ref-type="bibr" rid="scirp.107532-ref18">18</xref>] (Figures 27-30).</p><p>According to Figures 27-30, our new proposed algorithm (“New test”) finds that all the input sequences are non-random as it should in contrary to the NIST tests [<xref ref-type="bibr" rid="scirp.107532-ref18">18</xref>]. In addition, our new proposed algorithm (“New test”) also indicates to those places where repeated samples are found that have already appeared in the tested sequence.</p><p>Although the presented examples (Figures 27-30) refer to a sequence length of 1024 samples only, the algorithm can also be applied successfully for longer sequences such as for 2048 or 4096 samples by changing only a few parameters within the algorithm. It should be pointed out that according to [<xref ref-type="bibr" rid="scirp.107532-ref18">18</xref>], the assumption has been made that the size of the sequence length, is large (of the order 10<sup>3</sup> to 10<sup>7</sup>) for many of the tests in [<xref ref-type="bibr" rid="scirp.107532-ref18">18</xref>]. For such large sample sizes of the sequence length, asymptotic reference distributions have been derived and applied to carry out the tests [<xref ref-type="bibr" rid="scirp.107532-ref18">18</xref>]. Most of the tests are applicable for smaller values of the sequence length [<xref ref-type="bibr" rid="scirp.107532-ref18">18</xref>]. However, if used for smaller values of the sequence length, the asymptotic reference distributions would be inappropriate and would need to be replaced by exact distributions that would commonly be difficult to compute [<xref ref-type="bibr" rid="scirp.107532-ref18">18</xref>]. As already mentioned earlier in this work, the Wigner function [<xref ref-type="bibr" rid="scirp.107532-ref27">27</xref>] allows us to get the spectrum as a function of time which makes it applicable for the non-stationary input sequence case. The DFT function is not suitable for the non-stationary input sequence case. Different sizes of the input sequence length do not affect the fact that the Wigner function [<xref ref-type="bibr" rid="scirp.107532-ref27">27</xref>] is a proper choice for the non-stationary input sequence. Thus, we just looked for the minimum input sequence length allowed according to [<xref ref-type="bibr" rid="scirp.107532-ref18">18</xref>] in order to have a low computation time.</p></sec><sec id="s6"><title>6. Conclusion</title><p>In this paper, we proposed a new approach for estimating the probability of signal randomness degree based on the Wigner and GGD functions which allowed us to classify the input sequence in the time and frequency domains at the same time. Our new proposed approach is suitable also for non-stationary input sequences where the NIST tests fail. In addition, this new proposed algorithm has the ability to indicate on suspicious places of cyclic sections in the tested sequence. Thus, the option to repair or to remove the suspicious places of cyclic sections in the tested input sequence is given with this new approach which was not available until now. Simulation results have confirmed the effectiveness of our new proposed method for estimating the probability of signal randomness degree for non-stationary input sequences. It should be pointed out here that the values for the four parameters (“Power”, “Distance”, “Density” and “Highest”) were not optimized. Thus, it is possible to get even better results in identifying if the tested sequence is random or not.</p></sec><sec id="s7"><title>Funding Statement</title><p>The authors would like to thank the Israeli Innovation Authority and Defender Cyber Technologies LTD for their support for research under the Academic Knowledge Guidance Program (Nofar) File No. 63907.</p></sec><sec id="s8"><title>Patent Statement</title><p>A Patent Application incorporating this paper has been filed.</p></sec><sec id="s9"><title>Conflicts of Interest</title><p>The authors declare no conflicts of interest regarding the publication of this paper.</p></sec><sec id="s10"><title>Cite this paper</title><p>Avraham, Y. and Pinchas, M. (2021) A New Approach for the DFT NIST Test Applicable for Non- Stationary Input Sequences. Journal of Signal and Information Processing, 12, 1-41. https://doi.org/10.4236/jsip.2021.121001</p></sec><sec id="s11"><title>Appendix</title><p>The mathematical description for g ˜ [ n ] and g ^ [ n ] with an input sequence length of 2048 and 4096 respectively is:</p><p>g ˜ [ n ] = [ a 0 , a 8 q , a 16 q , a 24 q , ⋯ , a N − 8 q ]     ( time domain )</p><p>g ^ [ n ] = [ a ^ 0 , a ^ 8 q , a ^ 16 q , a ^ 24 q , ⋯ , a ^ N − 8 q ]     ( freguency domain )</p><p>a j and a ^ j where</p><p>j = 0 , 8 q , 16 q , ⋯ , N − 8 q .</p><p>For q = 2 :</p><p>a j = [ 1 16 ∑ i = 1 i = 16   G [ i + j ] , 1 16 ∑ i = 1 i = 16   G [ i + j ] , 1 16 ∑ i = 1 i = 16   G [ i + j ] , 1 16 ∑ i = 1 i = 16   G [ i + j ] ,               1 16 ∑ i = 1 i = 16   G [ i + j ] , 1 16 ∑ i = 1 i = 16   G [ i + j ] , 1 16 ∑ i = 1 i = 16   G [ i + j ] , 1 16 ∑ i = 1 i = 16   G [ i + j ] ,               1 16 ∑ i = 1 i = 16   G [ i + j ] , 1 16 ∑ i = 1 i = 16   G [ i + j ] , 1 16 ∑ i = 1 i = 16   G [ i + j ] , 1 16 ∑ i = 1 i = 16   G [ i + j ] ,               1 16 ∑ i = 1 i = 16   G [ i + j ] , 1 16 ∑ i = 1 i = 16   G [ i + j ] , 1 16 ∑ i = 1 i = 16   G [ i + j ] , 1 16 ∑ i = 1 i = 16   G [ i + j ] ]</p><p>a ^ j = [ 1 16 ∑ i = 1 i = 16   G ^ [ i + j ] , 1 16 ∑ i = 1 i = 16   G ^ [ i + j ] , 1 16 ∑ i = 1 i = 16   G ^ [ i + j ] , 1 16 ∑ i = 1 i = 16   G ^ [ i + j ] ,               1 16 ∑ i = 1 i = 16   G ^ [ i + j ] , 1 16 ∑ i = 1 i = 16   G ^ [ i + j ] , 1 16 ∑ i = 1 i = 16   G ^ [ i + j ] , 1 16 ∑ i = 1 i = 16   G ^ [ i + j ] ,               1 16 ∑ i = 1 i = 16   G ^ [ i + j ] , 1 16 ∑ i = 1 i = 16   G ^ [ i + j ] , 1 16 ∑ i = 1 i = 16   G ^ [ i + j ] , 1 16 ∑ i = 1 i = 16   G ^ [ i + j ] ,               1 16 ∑ i = 1 i = 16   G ^ [ i + j ] , 1 16 ∑ i = 1 i = 16   G ^ [ i + j ] , 1 16 ∑ i = 1 i = 16   G ^ [ i + j ] , 1 16 ∑ i = 1 i = 16   G ^ [ i + j ] ]</p><p>For q = 4 :</p><p>a j = [ 1 32 ∑ i = 1 i = 32   G [ i + j ] , 1 32 ∑ i = 1 i = 32   G [ i + j ] , 1 32 ∑ i = 1 i = 32   G [ i + j ] , 1 32 ∑ i = 1 i = 32   G [ i + j ] ,               1 32 ∑ i = 1 i = 32   G [ i + j ] , 1 32 ∑ i = 1 i = 32   G [ i + j ] , 1 32 ∑ i = 1 i = 32   G [ i + j ] , 1 32 ∑ i = 1 i = 32   G [ i + j ] ,               1 32 ∑ i = 1 i = 32   G [ i + j ] , 1 32 ∑ i = 1 i = 32   G [ i + j ] , 1 32 ∑ i = 1 i = 32   G [ i + j ] , 1 32 ∑ i = 1 i = 32   G [ i + j ] ,               1 32 ∑ i = 1 i = 32   G [ i + j ] , 1 32 ∑ i = 1 i = 32   G [ i + j ] , 1 32 ∑ i = 1 i = 32   G [ i + j ] , 1 32 ∑ i = 1 i = 32   G [ i + j ] ,</p><p>              1 32 ∑ i = 1 i = 32   G [ i + j ] , 1 32 ∑ i = 1 i = 32   G [ i + j ] , 1 32 ∑ i = 1 i = 32   G [ i + j ] , 1 32 ∑ i = 1 i = 32   G [ i + j ] ,               1 32 ∑ i = 1 i = 32   G [ i + j ] , 1 32 ∑ i = 1 i = 32   G [ i + j ] , 1 32 ∑ i = 1 i = 32   G [ i + j ] , 1 32 ∑ i = 1 i = 32   G [ i + j ] ,               1 32 ∑ i = 1 i = 32   G [ i + j ] , 1 32 ∑ i = 1 i = 32   G [ i + j ] , 1 32 ∑ i = 1 i = 32   G [ i + j ] , 1 32 ∑ i = 1 i = 32   G [ i + j ] ,               1 32 ∑ i = 1 i = 32   G [ i + j ] , 1 32 ∑ i = 1 i = 32   G [ i + j ] , 1 32 ∑ i = 1 i = 32   G [ i + j ] , 1 32 ∑ i = 1 i = 32   G [ i + j ] ]</p><p>a ^ j = [ 1 32 ∑ i = 1 i = 32   G ^ [ i + j ] , 1 32 ∑ i = 1 i = 32   G ^ [ i + j ] , 1 32 ∑ i = 1 i = 32   G ^ [ i + j ] , 1 32 ∑ i = 1 i = 32   G ^ [ i + j ] ,               1 32 ∑ i = 1 i = 32   G ^ [ i + j ] , 1 32 ∑ i = 1 i = 32   G ^ [ i + j ] , 1 32 ∑ i = 1 i = 32   G ^ [ i + j ] , 1 32 ∑ i = 1 i = 32   G ^ [ i + j ] ,               1 32 ∑ i = 1 i = 32   G ^ [ i + j ] , 1 32 ∑ i = 1 i = 32   G ^ [ i + j ] , 1 32 ∑ i = 1 i = 32   G ^ [ i + j ] , 1 32 ∑ i = 1 i = 32   G ^ [ i + j ] ,               1 32 ∑ i = 1 i = 32   G ^ [ i + j ] , 1 32 ∑ i = 1 i = 32   G ^ [ i + j ] , 1 32 ∑ i = 1 i = 32   G ^ [ i + j ] , 1 32 ∑ i = 1 i = 32   G ^ [ i + j ] ,</p><p>              1 32 ∑ i = 1 i = 32   G ^ [ i + j ] , 1 32 ∑ i = 1 i = 32   G ^ [ i + j ] , 1 32 ∑ i = 1 i = 32   G ^ [ i + j ] , 1 32 ∑ i = 1 i = 32   G ^ [ i + j ] ,               1 32 ∑ i = 1 i = 32   G ^ [ i + j ] , 1 32 ∑ i = 1 i = 32   G ^ [ i + j ] , 1 32 ∑ i = 1 i = 32   G ^ [ i + j ] , 1 32 ∑ i = 1 i = 32   G ^ [ i + j ] ,               1 32 ∑ i = 1 i = 32   G ^ [ i + j ] , 1 32 ∑ i = 1 i = 32   G ^ [ i + j ] , 1 32 ∑ i = 1 i = 32   G ^ [ i + j ] , 1 32 ∑ i = 1 i = 32   G ^ [ i + j ] ,               1 32 ∑ i = 1 i = 32   G ^ [ i + j ] , 1 32 ∑ i = 1 i = 32   G ^ [ i + j ] , 1 32 ∑ i = 1 i = 32   G ^ [ i + j ] , 1 32 ∑ i = 1 i = 32   G ^ [ i + j ] ]</p></sec></body><back><ref-list><title>References</title><ref id="scirp.107532-ref1"><label>1</label><mixed-citation publication-type="other" xlink:type="simple">Marple, L. (1999) Computing the Discrete-Time “Analytic” Signal via FFT. IEEE Transactions on Signal Processing, 47, 2600-2603. https://doi.org/10.1109/78.782222</mixed-citation></ref><ref id="scirp.107532-ref2"><label>2</label><mixed-citation publication-type="other" xlink:type="simple">Gonz&amp;#225lez-Far&amp;#237as, G., Dom&amp;#237nguez-Molina, J.A. and Rodr&amp;#237guez-Dagnino, R.M. (2009) Efficiency of the Approximated Shape Parameter Estimator in the Generalized Gaussian Distribution. IEEE Transactions on Vehicular Technology, 58, 4214-4223. https://doi.org/10.1109/TVT.2009.2021270</mixed-citation></ref><ref id="scirp.107532-ref3"><label>3</label><mixed-citation publication-type="other" xlink:type="simple">Dom&amp;#237nguez-Molina, J.A., Gonz&amp;#225lez-Far&amp;#237as, G. and Rodr&amp;#237guez-Dagnino, R.M. (2003) A Practical Procedure to Estimate the Shape Parameter in the Generalized Gaussian Distribution. Universidad de Guanajuato, ITESM Campus Monterrey, Guanajuato, 1-27.</mixed-citation></ref><ref id="scirp.107532-ref4"><label>4</label><mixed-citation publication-type="other" xlink:type="simple">Claasen, T.A.C.M. and Mecklenbrauker, W.F.G. (1980) The Wigner Distribution— A Tool for Time-Frequency Signal Analysis—PART II: Discrete-Time Signals. Phillips Journal or Research, 35, 276-300.</mixed-citation></ref><ref id="scirp.107532-ref5"><label>5</label><mixed-citation publication-type="other" xlink:type="simple">Claasen, T.A.C.M. and Mecklenbrauker, W.F.G. (1980) The Wigner Distribution— A Tool for Time-Frequency Signal Analysis—PART I: Continuous-Time Signals. Phillips Journal or Research, 35, 217-250.</mixed-citation></ref><ref id="scirp.107532-ref6"><label>6</label><mixed-citation publication-type="other" xlink:type="simple">Zhu, S., Ma, Y., Li, X., Yang, J. and Lin, J. (2020) On the Analysis and Improvement of Min-Entropy Estimation on Time-Varying Data. IEEE Transactions on Information Forensics and Security, 15, 1696-1708. https://doi.org/10.1109/TIFS.2019.2947871</mixed-citation></ref><ref id="scirp.107532-ref7"><label>7</label><mixed-citation publication-type="other" xlink:type="simple">Hamano, K. (2005) The Distribution of the Spectrum for the Discrete Fourier Transform Test Included in SP800-22. IEICE Transactions on Fundamentals of Electronics, Communications and Computer Sciences, E88-A, 67-73. https://doi.org/10.1093/ietfec/E88-A.1.67</mixed-citation></ref><ref id="scirp.107532-ref8"><label>8</label><mixed-citation publication-type="other" xlink:type="simple">Pareschi, F., Rovatti R. and Setti, G. (2012) On Statistical Tests for Randomness Included in the NIST SP800-22 Test Suite and Based on the Binomial Distribution. IEEE Transactions on Information Forensics and Security, 7, 491-505. https://doi.org/10.1109/TIFS.2012.2185227</mixed-citation></ref><ref id="scirp.107532-ref9"><label>9</label><mixed-citation publication-type="other" xlink:type="simple">Iwasaki, A. (2020) Deriving the Variance of the Discrete Fourier Transform Test Using Parseval’s Theorem. IEEE Transactions on Information Theory, 66, 1164-1170. https://doi.org/10.1109/TIT.2019.2947045</mixed-citation></ref><ref id="scirp.107532-ref10"><label>10</label><mixed-citation publication-type="other" xlink:type="simple">Okada, H. and Umeno, K. (2017) Randomness Evaluation with the Discrete Fourier Transform Test Based on Exact Analysis of the Reference Distribution. IEEE Transactions on Information Forensics and Security, 12, 1218-1226. https://doi.org/10.1109/TIFS.2017.2656473</mixed-citation></ref><ref id="scirp.107532-ref11"><label>11</label><mixed-citation publication-type="other" xlink:type="simple">Ho&amp;#355oleanu, D., Cre&amp;#355, O., Suciu, A., Gyorfi, T. and V&amp;#259cariu, L. (2010) Real-Time Testing of True Random Number Generators through Dynamic Reconfiguration. 2010 13th Euromicro Conference on Digital System Design: Architectures, Methods and Tools, Lille, 1-3 September 2010, 247-250. https://doi.org/10.1109/DSD.2010.56</mixed-citation></ref><ref id="scirp.107532-ref12"><label>12</label><mixed-citation publication-type="other" xlink:type="simple">Georgescu, C., Simion, E., Nita, A.P. and Toma, A. (2017) A View on NIST Randomness Tests (In)Dependence. International Conference on Electronics, Computers and Artificial Intelligence, Targoviste, 29 June-1 July 2017, 1-4. https://doi.org/10.1109/ECAI.2017.8166460</mixed-citation></ref><ref id="scirp.107532-ref13"><label>13</label><mixed-citation publication-type="other" xlink:type="simple">Rukhin, A., Soto, J., Nechvatal, J., Smid, M., Barker, E., Leigh, S., Levenson, M., Vangel M., Banks, D., Heckert, A., Dray, J. and San, V. (2010) A Statistical Test Suite for Random and Pseudorandom Number Generators for Cryptographic Applications. National Institute of Standards and Technology, Gaithersburg, 2.1-2.40. https://nvlpubs.nist.gov/nistpubs/Legacy/SP/nistspecialpublication800-22r1a.pdf</mixed-citation></ref><ref id="scirp.107532-ref14"><label>14</label><mixed-citation publication-type="other" xlink:type="simple">Mrton, K., Bja, V. and Suciu, A. (2014) Parallel Implementation of the Matrix Rank Test for Randomness Assessment. IEEE 10th International Conference on Intelligent Computer Communication and Processing, Cluj-Napoca, 4-6 September 2014, 317-321. https://doi.org/10.1109/ICCP.2014.6937015</mixed-citation></ref><ref id="scirp.107532-ref15"><label>15</label><mixed-citation publication-type="other" xlink:type="simple">Qi, M. and Dong, J. (2009) Research and Application of Entropy in the Sequence Randomness Test. 2009 Asia-Pacific Conference on Computational Intelligence and Industrial Applications, Wuhan, 28-29 November 2009, 224-227. https://doi.org/10.1109/PACIIA.2009.5406638</mixed-citation></ref><ref id="scirp.107532-ref16"><label>16</label><mixed-citation publication-type="other" xlink:type="simple">Fischer, T. (2018) Testing Cryptographically Secure Pseudo Random Number Generators with Artificial Neural Networks. IEEE International Conference on Trust, Security and Privacy in Computing and Communications/12th IEEE International Conference on Big Data Science and Engineering, New York, 1-3 August 2018, 1214-1223. https://doi.org/10.1109/TrustCom/BigDataSE.2018.00168</mixed-citation></ref><ref id="scirp.107532-ref17"><label>17</label><mixed-citation publication-type="other" xlink:type="simple">Fan, Y.T. and Su, G.P. (2014) A New Testing Method of Randomness for True Random Sequences. 2014 IEEE 5th International Conference on Software Engineering and Service Science, Beijing, 27-29 June 2014, 537-540. https://doi.org/10.1109/ICSESS.2014.6933624</mixed-citation></ref><ref id="scirp.107532-ref18"><label>18</label><mixed-citation publication-type="other" xlink:type="simple">Zhu, S. (2015) A Randomness Test Based on the Distribution of Position for Pre-Specified Pattern. 2015 International Conference on Computer Science and Mechanical Automation, Hangzhou, 23-25 October 2015, 166-169. https://doi.org/10.1109/CSMA.2015.40</mixed-citation></ref><ref id="scirp.107532-ref19"><label>19</label><mixed-citation publication-type="other" xlink:type="simple">M&amp;#225rton, K., Homan, M., Suciu, A. and Rasa, I. (2013) The Histogram Test for Randomness Assessment. 2013 RoEduNet International Conference 12th Edition: Networking in Education and Research, Iasi, 26-28 September 2013, 1-5. https://doi.org/10.1109/RoEduNet.2013.6714183</mixed-citation></ref><ref id="scirp.107532-ref20"><label>20</label><mixed-citation publication-type="other" xlink:type="simple">Pareschi, F., Rovatti, R. and Setti, G. (2007) Second-Level NIST Randomness Tests for Improving Test Reliability. IEEE International Symposium on Circuits and Systems, New Orleans, 27-30 May 2007, 1437-1440. https://doi.org/10.1109/ISCAS.2007.378572</mixed-citation></ref><ref id="scirp.107532-ref21"><label>21</label><mixed-citation publication-type="other" xlink:type="simple">Prokofiev, A.O. (2019) Development Principles and Classification of PRNG Graphical Tests. IEEE Conference of Russian Young Researchers in Electrical and Electronic Engineering, Saint Petersburg and Moscow, 28-31 January 2019, 295-300. https://doi.org/10.1109/EIConRus.2019.8657165</mixed-citation></ref><ref id="scirp.107532-ref22"><label>22</label><mixed-citation publication-type="other" xlink:type="simple">Prokofiev, A.O., Chirkin A.V. and Bukharov V.A. (2018) Methodology for Quality Evaluation of PRNG, by Investigating Distribution in a Multidimensional Space. IEEE Conference of Russian Young Researchers in Electrical and Electronic Engineering, Moscow, 29 January-1 February 2018, 355-357. https://doi.org/10.1109/EIConRus.2018.8317105</mixed-citation></ref><ref id="scirp.107532-ref23"><label>23</label><mixed-citation publication-type="other" xlink:type="simple">Bahadur, V., Selvakumar Vijendran, D. and Sobha, P.M. (2016) Reconfigurable Side Channel Attack Resistant True Random Number Generator. International Conference on VLSI Systems, Architectures, Technology and Applications, Bengaluru, 10-12 January 2016, 1-6. https://doi.org/10.1109/VLSI-SATA.2016.7593048</mixed-citation></ref><ref id="scirp.107532-ref24"><label>24</label><mixed-citation publication-type="other" xlink:type="simple">Soucarros, M., Canovas-Dumas, C., Cldire, J., Elbaz-Vincent, P. and Ral, D. (2011) Influence of the Temperature on True Random Number Generators. 2011 IEEE International Symposium on Hardware-Oriented Security and Trust, San Diego, 5-6 June 2011, 24-27. https://doi.org/10.1109/HST.2011.5954990</mixed-citation></ref><ref id="scirp.107532-ref25"><label>25</label><mixed-citation publication-type="other" xlink:type="simple">Petrie, C.S. and Alvin Connelly, J. (1999) The Sampling of Noise for Random Number Generation. IEEE International Symposium on Circuits and Systems, Orlando, 30 May-2 June 1999, 26-29. https://doi.org/10.1109/ISCAS.1999.780085</mixed-citation></ref><ref id="scirp.107532-ref26"><label>26</label><mixed-citation publication-type="other" xlink:type="simple">Goll, M. and Gueron, S. (2018) Randomness Tests in Hostile Environments. IEEE Transactions on Dependable and Secure Computing, 15, 289-294. https://doi.org/10.1109/TDSC.2016.2537799</mixed-citation></ref><ref id="scirp.107532-ref27"><label>27</label><mixed-citation publication-type="other" xlink:type="simple">Mathew, S.K., Srinivasan, S., Anders, M.A., Kaul, H., Hsu, S.K., Sheikh, F., Agarwal, A., Satpathy, S. and Krishnamurthy, R.K. (2012) 2.4 Gbps, 7 mW All-Digital PVT-Variation Tolerant True Random Number Generator for 45 nm CMOS High-Performance Microprocessors. IEEE Journal of Solid-State Circuits, 47, 2807-2821. https://doi.org/10.1109/JSSC.2012.2217631</mixed-citation></ref><ref id="scirp.107532-ref28"><label>28</label><mixed-citation publication-type="other" xlink:type="simple">Soorat, R., Madhuri, K. and Vudayagiri, A. (2017) Hardware Random Number Generator for Cryptography. NANOSYSTEMS: Physics, Chemistry, Mathematics, 8, 600-605. https://doi.org/10.17586/2220-8054-2017-8-5-600-605 https://www.researchgate.net/publication/282639432_Hardware_Random_number_Generator_for_cryptography#fullTextFileContent</mixed-citation></ref><ref id="scirp.107532-ref29"><label>29</label><mixed-citation publication-type="other" xlink:type="simple">Inayah, K., Sukmono, B. E., Purwoko, R. and Indarjani, S. (2013) Insertion Attack Effects on Standard PRNGs ANSI X9.17 and ANSI X9.31 Based on Statistical Distance Tests and Entropy Difference Tests. 2013 International Conference on Computer, Control, Informatics and Its Applications, Jakarta, 19-21 November 2013, 219-224. https://doi.org/10.1109/IC3INA.2013.6819177</mixed-citation></ref><ref id="scirp.107532-ref30"><label>30</label><mixed-citation publication-type="other" xlink:type="simple">Martin, H., Peris-Lopez, P., Tapiador, J. E. and San Millan, E. (2016) A New TRNG Based on Coherent Sampling with Self-Timed Rings. Transactions on Industrial Informatics, 12, 91-100. https://doi.org/10.1109/TII.2015.2502183</mixed-citation></ref></ref-list></back></article>