RaBiGeTe MT
Multithreaded version of RaBiGeTe with GUI (Windows only)
Cristiano fecit anno Domini MMXI
Index
Updates
Date  Ver  Description 
20131219  2.0.0 
Added the 64bit version. Improved the scalability of some tests on multicore CPU (currently: partition, peak, windowed autoc. and DFT). Added several random walk based tests (including two 2D versions). Changed the peak test and added a "multiblock" version. Changed the partition test and increased the block size from 12 to 13 bits. Increased the block size for the windowed autocorrelation test from 31 bits to unlimited. Increased the block size for the permutation test from 12 to 32 bits. Replaced SL test for the overall pvalues with the stronger binomial test. Added some tests in the "Graph" page. Added a list control to disable and hide the unwanted tests in the "Parameters" page and to change the display order in the tables. Added a control to automatically sort the pvalues in the tables when the testing phase ends. Added a control to set the row height of the tables. Added some tooltips to explain the meaning of the test parameters. Improved the parameter checking for some tests to run with very short sequences. Improved the responsiveness of the GUI during the testing phase. The sorting of the table in the "Table" page is now much faster. Removed the overall values in the main table and in the "Pearson" table. Removed the "Auto len" checkbox. Removed the "Extended output" checkbox of the block and gap distance test. Starting from the next version, RaBiGeTe will be able to load the preferences saved by an earlier version. Improved the updating speed of the table during the testing phase. The file with the results now contains all the pages of the GUI. Fixed memory allocation and deallocation when a big amount of memory is required. Many minor improvements. 
20111102  1.1.0 
Added the ability to use a DLL to get the bits or the numbers to test. Definitely discarded the parameter n for the Maurer's test (in v1.0.0 it was disabled and unused). Added some information about the running time. Changed some error messages. 
20111028  1.0.0  First release. 
What RaBiGeTe does
With RaBiGeTe you can test a random or pseudorandom bit or number generator to see whether it has the characteristics expected in a true random generator.Quick start
You must first prepare the data to test. There are two way to do that: to save the output of your generator in a file or to write a DLL which outputs the numbers to test.
In both cases, you should write the name of the file to test or the DLL to use in the edit "File(s) to test or DLL to use". RaBiGeTe converts the content of the edit control to lower case and it searches the string ".dll". If that string is found, then RaBiGeTe will consider the file as a DLL. So, if you want to use an input file with the data to test, you should avoid names like "PRNG.DLL.dat" or "Bits from dll 'myrng.dll'".
 The input file
 Using a DLL
In the download section you find the source code of a sample DLL that you can customize for your generator.
The DLL should export 4 functions, but only the first is mandatory (the names must not be changed):
 How to test
Program description
RaBiGeTe is based on a tabbed control with six pages. Parameters page
In this page there are the settings for the tests. Here, you can enable/disable the tests, you can change all the test parameters, the file to test or the DLL to use, the sequence length and the number of sequences to test.
 Table page
In this page it is showed the test progress and the result.
pvals: number of the valid pvalues.
pv min: smallest pvalue in the row.
pv max: biggest pvalue in the row.
The sample image shows "20" under "pvals" for the rows: 1, 2, ...; it means that 20 sequences have been tested (bad practice, but this is just an example; try to test at least 50 sequences).
You also see "138" in the rows "KS", "AD" and "Bino" under "pvals"; it means that there are 138 valid rows with the tests ("AMLS 2", "AMLS 8", ...).
The KS test of the pvalues in the row 1 (test "AMLS 2") from column 1 to 20 is 0.2375, while the AD test of the same pvalues is 0.3929 and the binomial test is 0.8398.
The KS test of the 138 pvalues in the column "KS" is 0.7347, while the AD test of the same pvalues is 0.8357 and the pvalue for the binomial test is 0.9988.
The KS test of the 138 pvalues in the column "AD" is 0.4532, while the AD test of the same pvalues is 0.4685 and the pvalue for the binomial test is 0.9777.
Let ns be the number of the sequences tested so far. When a pvalue obtained from a test is lesser than 0.01/ns or bigger than 1  0.01/ns, that pvalue is reported in the columns "pv min" or "pv max" using the red color. It doesn't necessarily mean that there is a problem, it is just an indication to catch your attention.
The calculation of the "blue pvalues" for the KS and the AD tests is affected by errors. Usually there are 2 exact significant figures, hence it should not be a problem. In case of doubt, when you see a low KS or AD pvalue, take the pvalues for the "Bino" (binomial) test into account (they are exact). 
Some tests (like the Maurer's Universal test) need a variable (and unpredictable) number of bits. When the needed bits are not available, RaBiGeTe shows "short" to indicate that the bits sequence is too short. The image shows "short" in the row 10 for the 4th sequence and the valid pvalues count is 19 (in the column "pvals"). 
The image shows a typical output when a weak generator is tested. When a sequence is really bad, some tests may not be able to calculate the related pvalue; in this case, that pvalue is reported as "fail" and RaBiGeTe will shows "WARNING! Big failure" on the top left corner of the table. When it happens, there is probably no reason to keep testing; if you want to stop the testing, just press the "Del" key on the keyboard. When all the tests on the current sequence will end, RaBiGeTe will stop testing. Although extremely unlikely, theoretically, the label "fail" may be reported for a single pvalue of just one test, hence "WARNING! Big failure" does not necessarily mean that the generator is really bad. However, when we see a result like this, there is no doubt that the generator is really flawed. 
 Pearson page
This page shows the pvalues related to the Pearson's chisquare test. The number of bins is calculated as the square root (rounded up) of the number of sequences tested. The bins are numbered from 1 to n and are showed in the column 1, 2, ..., n. Each bin contains the pvalues in the interval [(b1)/n, b/n), where b is the bin number. The expected number of the pvalues in each bin is showed in the column "Exp", while the count of the pvalues in each bin is showed in the column 1, 2, ..., n. The reported pvalue for each test (showed in the rows 1, 2, ...) is the probability that the calculated chisquare is bigger than an uniformly distributed random variate. 
 Graph page
This page is divided into two parts.

 Messages page
This page shows any kind of message (infos, warnings and errors). When the testing phase ends, this page shows some information about the testing times. In this example, you can see that the CPU time taken by all the tests is 3 minutes and 17 seconds, while the running time of the testing phase is just 55 seconds. This happens when RaBiGeTe runs in a multicore system. You can also see that the CPU load during the testing phase was 44.5% (equivalent to 3.56 fully loaded cores of an i74770 CPU). 
 Preferences page
In this page the user can change the basic behavior of RaBiGeTe.
Disable and hide / Display order: if you don't like some tests, you just need to mark the unwanted test using the corresponding checkbox; the checked tests will not appear in the "Parameters" page (and they will be disabled).
The same list control is used to determine the display order of the tests in the tables. To change the display order, select a row in the list and use the "Up" and "Down" buttons to move the row. With the "Sort" button the tests will be alphabetically sorted.
Running priority: if you are starting a long testing phase, you may want to assign the idle priority to RaBiGeTe so that you can use your PC for other tasks.
Concurrent threads: RaBiGeTe creates one threads for each enabled test to take advantage from a multicore CPU. I suggest to set this value to the number of the cores in your CPU, but you can try any value in the allowed range.
Pvalue digits: it's the number of the decimal digits that RaBiGeTe uses to show the pvalues (the calculations are always done in full precision).
Auto sort pvalues: when the testing phase ends, the pvalues in the tables can be automatically sorted (you can always click the column header to sort the tables as you like).
Tables row height: row height of the tables in the pages "Table" and "Pearson".
Download
 Minimalist version
If you just want to see what RaBiGeTe is, you can choose this ready to use minimalist version. Data files
You need these files only if you want to use the related tests. Runtime libraries
RaBiGeTe needs the files: msvcp110.dll and msvcr110.dll; you may already have them installed. Executables
These packages contain: Sample DLL source code
These packages contain the Visual Studio project files for the DLL that RaBiGeTe can use to test your generator (you don't need a DLL if you use a data file with the numbers to test).Feedback
Please, send your suggestions here.