Multi-threaded version of RaBiGeTe with GUI (Windows only)
Cristiano fecit anno Domini MMXI
Added the 64-bit version.
Improved the scalability of some tests on multi-core CPU (currently: partition, peak, windowed autoc. and DFT).
Added several random walk based tests (including two 2-D versions).
Changed the peak test and added a "multi-block" 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 p-values 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 p-values 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.
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.
What RaBiGeTe doesWith RaBiGeTe you can test a random or pseudo-random bit or number generator to see whether it has the characteristics expected in a true random generator.
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 descriptionRaBiGeTe is based on a tabbed control with six pages.
- Parameters pageIn 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 pageIn this page it is showed the test progress and the result.
pvals: number of the valid p-values.
pv min: smallest p-value in the row.
pv max: biggest p-value 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 p-values in the row 1 (test "AMLS 2") from column 1 to 20 is 0.2375, while the AD test of the same p-values is 0.3929 and the binomial test is 0.8398.
The KS test of the 138 p-values in the column "KS" is 0.7347, while the AD test of the same p-values is 0.8357 and the p-value for the binomial test is 0.9988.
The KS test of the 138 p-values in the column "AD" is 0.4532, while the AD test of the same p-values is 0.4685 and the p-value for the binomial test is 0.9777.
Let ns be the number of the sequences tested so far. When a p-value obtained from a test is lesser than 0.01/ns or bigger than 1 - 0.01/ns, that p-value 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 p-values" 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 p-value, take the p-values 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 4-th sequence and the valid p-values 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 p-value; in this case, that p-value 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 p-value 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 p-values related to the Pearson's chi-square 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 p-values in the interval [(b-1)/n, b/n), where b is the bin number.
The expected number of the p-values in each bin is showed in the column "Exp", while the count of the p-values in each bin is showed in the column 1, 2, ..., n.
The reported p-value for each test (showed in the rows 1, 2, ...) is the probability that the calculated chi-square is bigger than an uniformly distributed random variate.
- Graph pageThis 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 multi-core 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 i7-4770 CPU).
- Preferences pageIn 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 multi-core 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.
P-value digits: it's the number of the decimal digits that RaBiGeTe uses to show the p-values (the calculations are always done in full precision).
Auto sort p-values: when the testing phase ends, the p-values 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".
- Minimalist versionIf you just want to see what RaBiGeTe is, you can choose this ready to use minimalist version.
- Data filesYou need these files only if you want to use the related tests.
- Runtime librariesRaBiGeTe needs the files: msvcp110.dll and msvcr110.dll; you may already have them installed.
- ExecutablesThese packages contain:
- Sample DLL source codeThese 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).
FeedbackPlease, send your suggestions here.