An open API service indexing awesome lists of open source software.

https://github.com/nmrr/flipperzero-random-number-quality

An analysis of quality of random number generator of Flipper Zero
https://github.com/nmrr/flipperzero-random-number-quality

dieharder flipper-zero flipperzero random-number-generators random-numbers

Last synced: 1 day ago
JSON representation

An analysis of quality of random number generator of Flipper Zero

Awesome Lists containing this project

README

        

# flipperzero-random-number-quality
An analysis of quality of random number generator of Flipper Zero

![](https://github.com/nmrr/flipperzero-random-number-quality/blob/main/img/Flipper_Zero.jpg)

Based on the [**Hello World**](https://github.com/zmactep/flipperzero-hello-world) of [zmactep](https://github.com/zmactep/)

**Flipper Zero** has a true random number generator according his [**CPU datasheet**](https://www.st.com/resource/en/datasheet/stm32wb55rg.pdf) : *The devices embed a true RNG that delivers 32-bit random numbers generated by an
integrated analog circuit.*

I'd like verify the quality of random numbers generated by the **Flipper Zero**

## How to generate random numbers ?

**Flipper Zero** toolchain provides two functions to generate random numbers by using hardware generator :

* **uint32_t furi_hal_random_get()** : to obtain 32 bits of random data
* **void furi_hal_random_fill_buf(uint8_t\* buf, uint32_t len)** : to fill a buffer of random data

## Build the program

I wrote a program that generates a file filled with 256MB of random data on the SD card (/random.dat)

Assuming the toolchain is already installed, copy **flipper_random** directory to **applications_user**

Plug your **Flipper Zero** and build the program :
```
./fbt launch_app APPSRC=applications_user/flipper_random
```

The program will automatically be launched after compilation :

The generation takes about 30 minutes. The program will automatically quit after generation

If you don't want to build the program, just simply copy **flipper_random.fap** on your **Flipper Zero**

## Analysis with dieharder

### With 256MB of data

**dieharder** is a testing and benchmarking tool for random number generators

Copy **/random.dat** file on your computer and launch the following command :

```
dieharder -a -g 201 -f random.dat
```

Click here to view results

```
diehard_birthdays| 0| 100| 100|0.55487123| PASSED
diehard_operm5| 0| 1000000| 100|0.79201568| PASSED
diehard_rank_32x32| 0| 40000| 100|0.59923892| PASSED
diehard_rank_6x8| 0| 100000| 100|0.92342072| PASSED
diehard_bitstream| 0| 2097152| 100|0.94159229| PASSED
diehard_opso| 0| 2097152| 100|0.00747132| PASSED
diehard_oqso| 0| 2097152| 100|0.18263591| PASSED
diehard_dna| 0| 2097152| 100|0.07915675| PASSED
diehard_count_1s_str| 0| 256000| 100|0.31495403| PASSED
diehard_count_1s_byt| 0| 256000| 100|0.69912362| PASSED
diehard_parking_lot| 0| 12000| 100|0.82688871| PASSED
diehard_2dsphere| 2| 8000| 100|0.44704427| PASSED
diehard_3dsphere| 3| 4000| 100|0.52652864| PASSED
diehard_squeeze| 0| 100000| 100|0.51781721| PASSED
diehard_sums| 0| 100| 100|0.64623799| PASSED
diehard_runs| 0| 100000| 100|0.99573267| WEAK
diehard_runs| 0| 100000| 100|0.48267656| PASSED
diehard_craps| 0| 200000| 100|0.08522731| PASSED
diehard_craps| 0| 200000| 100|0.08212908| PASSED
marsaglia_tsang_gcd| 0| 10000000| 100|0.00000003| FAILED
marsaglia_tsang_gcd| 0| 10000000| 100|0.00053548| WEAK
sts_monobit| 1| 100000| 100|0.09876225| PASSED
sts_runs| 2| 100000| 100|0.44896009| PASSED
sts_serial| 1| 100000| 100|0.72550312| PASSED
sts_serial| 2| 100000| 100|0.14638226| PASSED
sts_serial| 3| 100000| 100|0.45251237| PASSED
sts_serial| 3| 100000| 100|0.77572552| PASSED
sts_serial| 4| 100000| 100|0.59680397| PASSED
sts_serial| 4| 100000| 100|0.87343622| PASSED
sts_serial| 5| 100000| 100|0.39471355| PASSED
sts_serial| 5| 100000| 100|0.24502794| PASSED
sts_serial| 6| 100000| 100|0.08909655| PASSED
sts_serial| 6| 100000| 100|0.10717243| PASSED
sts_serial| 7| 100000| 100|0.83451597| PASSED
sts_serial| 7| 100000| 100|0.97964565| PASSED
sts_serial| 8| 100000| 100|0.36201175| PASSED
sts_serial| 8| 100000| 100|0.65209729| PASSED
sts_serial| 9| 100000| 100|0.99071115| PASSED
sts_serial| 9| 100000| 100|0.17544767| PASSED
sts_serial| 10| 100000| 100|0.82309444| PASSED
sts_serial| 10| 100000| 100|0.68136773| PASSED
sts_serial| 11| 100000| 100|0.43365875| PASSED
sts_serial| 11| 100000| 100|0.97170671| PASSED
sts_serial| 12| 100000| 100|0.72900319| PASSED
sts_serial| 12| 100000| 100|0.99584984| WEAK
sts_serial| 13| 100000| 100|0.21530249| PASSED
sts_serial| 13| 100000| 100|0.79026626| PASSED
sts_serial| 14| 100000| 100|0.12890705| PASSED
sts_serial| 14| 100000| 100|0.55255830| PASSED
sts_serial| 15| 100000| 100|0.78891114| PASSED
sts_serial| 15| 100000| 100|0.98063270| PASSED
sts_serial| 16| 100000| 100|0.10522510| PASSED
sts_serial| 16| 100000| 100|0.07350635| PASSED
rgb_bitdist| 1| 100000| 100|0.98396352| PASSED
rgb_bitdist| 2| 100000| 100|0.72379672| PASSED
rgb_bitdist| 3| 100000| 100|0.01351080| PASSED
rgb_bitdist| 4| 100000| 100|0.95524449| PASSED
rgb_bitdist| 5| 100000| 100|0.05370261| PASSED
rgb_bitdist| 6| 100000| 100|0.44257180| PASSED
rgb_bitdist| 7| 100000| 100|0.03501509| PASSED
rgb_bitdist| 8| 100000| 100|0.39167067| PASSED
rgb_bitdist| 9| 100000| 100|0.99180288| PASSED
rgb_bitdist| 10| 100000| 100|0.82502082| PASSED
rgb_bitdist| 11| 100000| 100|0.10809183| PASSED
rgb_bitdist| 12| 100000| 100|0.49863013| PASSED
rgb_minimum_distance| 2| 10000| 1000|0.59643869| PASSED
rgb_minimum_distance| 3| 10000| 1000|0.60902822| PASSED
rgb_minimum_distance| 4| 10000| 1000|0.32342827| PASSED
rgb_minimum_distance| 5| 10000| 1000|0.97899401| PASSED
rgb_permutations| 2| 100000| 100|0.02271425| PASSED
rgb_permutations| 3| 100000| 100|0.28577729| PASSED
rgb_permutations| 4| 100000| 100|0.68895384| PASSED
rgb_permutations| 5| 100000| 100|0.38110847| PASSED
rgb_lagged_sum| 0| 1000000| 100|0.00401051| WEAK
rgb_lagged_sum| 1| 1000000| 100|0.23456397| PASSED
rgb_lagged_sum| 2| 1000000| 100|0.01699212| PASSED
rgb_lagged_sum| 3| 1000000| 100|0.60478263| PASSED
rgb_lagged_sum| 4| 1000000| 100|0.04943578| PASSED
rgb_lagged_sum| 5| 1000000| 100|0.15648198| PASSED
rgb_lagged_sum| 6| 1000000| 100|0.12214976| PASSED
rgb_lagged_sum| 7| 1000000| 100|0.07300513| PASSED
rgb_lagged_sum| 8| 1000000| 100|0.71916719| PASSED
rgb_lagged_sum| 9| 1000000| 100|0.22802820| PASSED
rgb_lagged_sum| 10| 1000000| 100|0.00123661| WEAK
rgb_lagged_sum| 11| 1000000| 100|0.29959817| PASSED
rgb_lagged_sum| 12| 1000000| 100|0.25961032| PASSED
rgb_lagged_sum| 13| 1000000| 100|0.11422352| PASSED
rgb_lagged_sum| 14| 1000000| 100|0.16906362| PASSED
rgb_lagged_sum| 15| 1000000| 100|0.00000005| FAILED
rgb_lagged_sum| 16| 1000000| 100|0.27559901| PASSED
rgb_lagged_sum| 17| 1000000| 100|0.22432129| PASSED
rgb_lagged_sum| 18| 1000000| 100|0.28340080| PASSED
rgb_lagged_sum| 19| 1000000| 100|0.38629680| PASSED
rgb_lagged_sum| 20| 1000000| 100|0.44523026| PASSED
rgb_lagged_sum| 21| 1000000| 100|0.16320412| PASSED
rgb_lagged_sum| 22| 1000000| 100|0.29625362| PASSED
rgb_lagged_sum| 23| 1000000| 100|0.31001352| PASSED
rgb_lagged_sum| 24| 1000000| 100|0.04436115| PASSED
rgb_lagged_sum| 25| 1000000| 100|0.02613351| PASSED
rgb_lagged_sum| 26| 1000000| 100|0.05809093| PASSED
rgb_lagged_sum| 27| 1000000| 100|0.80853774| PASSED
rgb_lagged_sum| 28| 1000000| 100|0.10499849| PASSED
rgb_lagged_sum| 29| 1000000| 100|0.01814743| PASSED
rgb_lagged_sum| 30| 1000000| 100|0.32979792| PASSED
rgb_lagged_sum| 31| 1000000| 100|0.00085729| WEAK
rgb_lagged_sum| 32| 1000000| 100|0.02647133| PASSED
rgb_kstest_test| 0| 10000| 1000|0.08770174| PASSED
dab_bytedistrib| 0| 51200000| 1|0.49320605| PASSED
dab_dct| 256| 50000| 1|0.90718786| PASSED
Preparing to run test 207. ntuple = 0
dab_filltree| 32| 15000000| 1|0.52041788| PASSED
dab_filltree| 32| 15000000| 1|0.97976842| PASSED
Preparing to run test 208. ntuple = 0
dab_filltree2| 0| 5000000| 1|0.61874327| PASSED
dab_filltree2| 1| 5000000| 1|0.74648222| PASSED
Preparing to run test 209. ntuple = 0
dab_monobit2| 12| 65000000| 1|0.65116997| PASSED
```

2 tests have failed and 6 tests are marked as weak

The same test has been done with **256MB** of **/dev/urandom** data from a **Linux** computer :

Click here to view results

```
diehard_birthdays| 0| 100| 100|0.06228484| PASSED
diehard_operm5| 0| 1000000| 100|0.59723602| PASSED
diehard_rank_32x32| 0| 40000| 100|0.43907555| PASSED
diehard_rank_6x8| 0| 100000| 100|0.40014624| PASSED
diehard_bitstream| 0| 2097152| 100|0.17287854| PASSED
diehard_opso| 0| 2097152| 100|0.00246277| WEAK
diehard_oqso| 0| 2097152| 100|0.09822842| PASSED
diehard_dna| 0| 2097152| 100|0.11161138| PASSED
diehard_count_1s_str| 0| 256000| 100|0.49999119| PASSED
diehard_count_1s_byt| 0| 256000| 100|0.23362439| PASSED
diehard_parking_lot| 0| 12000| 100|0.80220017| PASSED
diehard_2dsphere| 2| 8000| 100|0.94573686| PASSED
diehard_3dsphere| 3| 4000| 100|0.74577481| PASSED
diehard_squeeze| 0| 100000| 100|0.14916488| PASSED
diehard_sums| 0| 100| 100|0.06679183| PASSED
diehard_runs| 0| 100000| 100|0.98216693| PASSED
diehard_runs| 0| 100000| 100|0.68559357| PASSED
diehard_craps| 0| 200000| 100|0.61910448| PASSED
diehard_craps| 0| 200000| 100|0.05755020| PASSED
marsaglia_tsang_gcd| 0| 10000000| 100|0.00000001| FAILED
marsaglia_tsang_gcd| 0| 10000000| 100|0.00095699| WEAK
sts_monobit| 1| 100000| 100|0.69389179| PASSED
sts_runs| 2| 100000| 100|0.16671354| PASSED
sts_serial| 1| 100000| 100|0.68748875| PASSED
sts_serial| 2| 100000| 100|0.85633578| PASSED
sts_serial| 3| 100000| 100|0.94268391| PASSED
sts_serial| 3| 100000| 100|0.07086450| PASSED
sts_serial| 4| 100000| 100|0.39714210| PASSED
sts_serial| 4| 100000| 100|0.31252989| PASSED
sts_serial| 5| 100000| 100|0.95694002| PASSED
sts_serial| 5| 100000| 100|0.22962139| PASSED
sts_serial| 6| 100000| 100|0.98097919| PASSED
sts_serial| 6| 100000| 100|0.83795708| PASSED
sts_serial| 7| 100000| 100|0.93683159| PASSED
sts_serial| 7| 100000| 100|0.79020964| PASSED
sts_serial| 8| 100000| 100|0.69377516| PASSED
sts_serial| 8| 100000| 100|0.38116960| PASSED
sts_serial| 9| 100000| 100|0.65940032| PASSED
sts_serial| 9| 100000| 100|0.85500230| PASSED
sts_serial| 10| 100000| 100|0.19849855| PASSED
sts_serial| 10| 100000| 100|0.16446525| PASSED
sts_serial| 11| 100000| 100|0.24735793| PASSED
sts_serial| 11| 100000| 100|0.40482073| PASSED
sts_serial| 12| 100000| 100|0.42946863| PASSED
sts_serial| 12| 100000| 100|0.67986759| PASSED
sts_serial| 13| 100000| 100|0.31904715| PASSED
sts_serial| 13| 100000| 100|0.89958112| PASSED
sts_serial| 14| 100000| 100|0.03516112| PASSED
sts_serial| 14| 100000| 100|0.00572954| PASSED
sts_serial| 15| 100000| 100|0.25516910| PASSED
sts_serial| 15| 100000| 100|0.98134393| PASSED
sts_serial| 16| 100000| 100|0.22681525| PASSED
sts_serial| 16| 100000| 100|0.55438687| PASSED
rgb_bitdist| 1| 100000| 100|0.61526582| PASSED
rgb_bitdist| 2| 100000| 100|0.06936633| PASSED
rgb_bitdist| 3| 100000| 100|0.40179970| PASSED
rgb_bitdist| 4| 100000| 100|0.64740032| PASSED
rgb_bitdist| 5| 100000| 100|0.46472989| PASSED
rgb_bitdist| 6| 100000| 100|0.07941194| PASSED
rgb_bitdist| 7| 100000| 100|0.44461086| PASSED
rgb_bitdist| 8| 100000| 100|0.58109228| PASSED
rgb_bitdist| 9| 100000| 100|0.70960474| PASSED
rgb_bitdist| 10| 100000| 100|0.85137858| PASSED
rgb_bitdist| 11| 100000| 100|0.99935805| WEAK
rgb_bitdist| 12| 100000| 100|0.70354535| PASSED
rgb_minimum_distance| 2| 10000| 1000|0.27460885| PASSED
rgb_minimum_distance| 3| 10000| 1000|0.36311414| PASSED
rgb_minimum_distance| 4| 10000| 1000|0.58342328| PASSED
rgb_minimum_distance| 5| 10000| 1000|0.14794446| PASSED
rgb_permutations| 2| 100000| 100|0.50547110| PASSED
rgb_permutations| 3| 100000| 100|0.18354717| PASSED
rgb_permutations| 4| 100000| 100|0.84601710| PASSED
rgb_permutations| 5| 100000| 100|0.63598280| PASSED
rgb_lagged_sum| 0| 1000000| 100|0.37287317| PASSED
rgb_lagged_sum| 1| 1000000| 100|0.75416576| PASSED
rgb_lagged_sum| 2| 1000000| 100|0.63961879| PASSED
rgb_lagged_sum| 3| 1000000| 100|0.01077529| PASSED
rgb_lagged_sum| 4| 1000000| 100|0.18887727| PASSED
rgb_lagged_sum| 5| 1000000| 100|0.16337583| PASSED
rgb_lagged_sum| 6| 1000000| 100|0.05431404| PASSED
rgb_lagged_sum| 7| 1000000| 100|0.01679565| PASSED
rgb_lagged_sum| 8| 1000000| 100|0.10235939| PASSED
rgb_lagged_sum| 9| 1000000| 100|0.58127552| PASSED
rgb_lagged_sum| 10| 1000000| 100|0.00843829| PASSED
rgb_lagged_sum| 11| 1000000| 100|0.08131415| PASSED
rgb_lagged_sum| 12| 1000000| 100|0.24835950| PASSED
rgb_lagged_sum| 13| 1000000| 100|0.39861688| PASSED
rgb_lagged_sum| 14| 1000000| 100|0.47914954| PASSED
rgb_lagged_sum| 15| 1000000| 100|0.00002898| WEAK
rgb_lagged_sum| 16| 1000000| 100|0.98131072| PASSED
rgb_lagged_sum| 17| 1000000| 100|0.80381793| PASSED
rgb_lagged_sum| 18| 1000000| 100|0.47926388| PASSED
rgb_lagged_sum| 19| 1000000| 100|0.05503440| PASSED
rgb_lagged_sum| 20| 1000000| 100|0.31173700| PASSED
rgb_lagged_sum| 21| 1000000| 100|0.96872067| PASSED
rgb_lagged_sum| 22| 1000000| 100|0.88674529| PASSED
rgb_lagged_sum| 23| 1000000| 100|0.16043397| PASSED
rgb_lagged_sum| 24| 1000000| 100|0.61149972| PASSED
rgb_lagged_sum| 25| 1000000| 100|0.75335182| PASSED
rgb_lagged_sum| 26| 1000000| 100|0.98130242| PASSED
rgb_lagged_sum| 27| 1000000| 100|0.03450865| PASSED
rgb_lagged_sum| 28| 1000000| 100|0.01963495| PASSED
rgb_lagged_sum| 29| 1000000| 100|0.75846016| PASSED
rgb_lagged_sum| 30| 1000000| 100|0.44591545| PASSED
rgb_lagged_sum| 31| 1000000| 100|0.00000137| WEAK
rgb_lagged_sum| 32| 1000000| 100|0.27222461| PASSED
rgb_kstest_test| 0| 10000| 1000|0.68380811| PASSED
dab_bytedistrib| 0| 51200000| 1|0.05530537| PASSED
dab_dct| 256| 50000| 1|0.88665003| PASSED
Preparing to run test 207. ntuple = 0
dab_filltree| 32| 15000000| 1|0.15196603| PASSED
dab_filltree| 32| 15000000| 1|0.33800187| PASSED
Preparing to run test 208. ntuple = 0
dab_filltree2| 0| 5000000| 1|0.84766841| PASSED
dab_filltree2| 1| 5000000| 1|0.00464316| WEAK
Preparing to run test 209. ntuple = 0
dab_monobit2| 12| 65000000| 1|0.69926158| PASSED
```

Only 1 test has failed and 6 tests are marked as weak

### With 4GB of data

These tests have been done with a larger dataset : 4GB

**Flipper Zero :**

Click here to view results

```
diehard_birthdays| 0| 100| 100|0.11059818| PASSED
diehard_operm5| 0| 1000000| 100|0.46243241| PASSED
diehard_rank_32x32| 0| 40000| 100|0.94015510| PASSED
diehard_rank_6x8| 0| 100000| 100|0.06733267| PASSED
diehard_bitstream| 0| 2097152| 100|0.19395269| PASSED
diehard_opso| 0| 2097152| 100|0.88003794| PASSED
diehard_oqso| 0| 2097152| 100|0.94872400| PASSED
diehard_dna| 0| 2097152| 100|0.30016367| PASSED
diehard_count_1s_str| 0| 256000| 100|0.20777586| PASSED
diehard_count_1s_byt| 0| 256000| 100|0.79506176| PASSED
diehard_parking_lot| 0| 12000| 100|0.25422977| PASSED
diehard_2dsphere| 2| 8000| 100|0.72884093| PASSED
diehard_3dsphere| 3| 4000| 100|0.95282276| PASSED
diehard_squeeze| 0| 100000| 100|0.04250899| PASSED
diehard_sums| 0| 100| 100|0.13981924| PASSED
diehard_runs| 0| 100000| 100|0.13508787| PASSED
diehard_runs| 0| 100000| 100|0.02455145| PASSED
diehard_craps| 0| 200000| 100|0.96194561| PASSED
diehard_craps| 0| 200000| 100|0.63547515| PASSED
marsaglia_tsang_gcd| 0| 10000000| 100|0.83452275| PASSED
marsaglia_tsang_gcd| 0| 10000000| 100|0.82545057| PASSED
sts_monobit| 1| 100000| 100|0.68486675| PASSED
sts_runs| 2| 100000| 100|0.91771409| PASSED
sts_serial| 1| 100000| 100|0.58359946| PASSED
sts_serial| 2| 100000| 100|0.92654385| PASSED
sts_serial| 3| 100000| 100|0.65764270| PASSED
sts_serial| 3| 100000| 100|0.98824281| PASSED
sts_serial| 4| 100000| 100|0.35597012| PASSED
sts_serial| 4| 100000| 100|0.53650061| PASSED
sts_serial| 5| 100000| 100|0.62396496| PASSED
sts_serial| 5| 100000| 100|0.36307390| PASSED
sts_serial| 6| 100000| 100|0.28946507| PASSED
sts_serial| 6| 100000| 100|0.28365471| PASSED
sts_serial| 7| 100000| 100|0.49950854| PASSED
sts_serial| 7| 100000| 100|0.13454074| PASSED
sts_serial| 8| 100000| 100|0.52850097| PASSED
sts_serial| 8| 100000| 100|0.72954489| PASSED
sts_serial| 9| 100000| 100|0.62072123| PASSED
sts_serial| 9| 100000| 100|0.99779751| WEAK
sts_serial| 10| 100000| 100|0.80344215| PASSED
sts_serial| 10| 100000| 100|0.54662822| PASSED
sts_serial| 11| 100000| 100|0.77730946| PASSED
sts_serial| 11| 100000| 100|0.72394364| PASSED
sts_serial| 12| 100000| 100|0.81524608| PASSED
sts_serial| 12| 100000| 100|0.94724026| PASSED
sts_serial| 13| 100000| 100|0.16490808| PASSED
sts_serial| 13| 100000| 100|0.64049681| PASSED
sts_serial| 14| 100000| 100|0.80427373| PASSED
sts_serial| 14| 100000| 100|0.68417802| PASSED
sts_serial| 15| 100000| 100|0.26721027| PASSED
sts_serial| 15| 100000| 100|0.26323260| PASSED
sts_serial| 16| 100000| 100|0.98447926| PASSED
sts_serial| 16| 100000| 100|0.15718959| PASSED
rgb_bitdist| 1| 100000| 100|0.04796896| PASSED
rgb_bitdist| 2| 100000| 100|0.67467531| PASSED
rgb_bitdist| 3| 100000| 100|0.73784137| PASSED
rgb_bitdist| 4| 100000| 100|0.26420347| PASSED
rgb_bitdist| 5| 100000| 100|0.81311612| PASSED
rgb_bitdist| 6| 100000| 100|0.57561992| PASSED
rgb_bitdist| 7| 100000| 100|0.38384323| PASSED
rgb_bitdist| 8| 100000| 100|0.01813294| PASSED
rgb_bitdist| 9| 100000| 100|0.66792440| PASSED
rgb_bitdist| 10| 100000| 100|0.53244433| PASSED
rgb_bitdist| 11| 100000| 100|0.98652471| PASSED
rgb_bitdist| 12| 100000| 100|0.65105991| PASSED
rgb_minimum_distance| 2| 10000| 1000|0.23083645| PASSED
rgb_minimum_distance| 3| 10000| 1000|0.70524844| PASSED
rgb_minimum_distance| 4| 10000| 1000|0.48583046| PASSED
rgb_minimum_distance| 5| 10000| 1000|0.30933062| PASSED
rgb_permutations| 2| 100000| 100|0.60895705| PASSED
rgb_permutations| 3| 100000| 100|0.21941196| PASSED
rgb_permutations| 4| 100000| 100|0.73590163| PASSED
rgb_permutations| 5| 100000| 100|0.07132175| PASSED
rgb_lagged_sum| 0| 1000000| 100|0.38382409| PASSED
rgb_lagged_sum| 1| 1000000| 100|0.70103574| PASSED
rgb_lagged_sum| 2| 1000000| 100|0.32942564| PASSED
rgb_lagged_sum| 3| 1000000| 100|0.16065528| PASSED
rgb_lagged_sum| 4| 1000000| 100|0.04307075| PASSED
rgb_lagged_sum| 5| 1000000| 100|0.36550579| PASSED
rgb_lagged_sum| 6| 1000000| 100|0.76352715| PASSED
rgb_lagged_sum| 7| 1000000| 100|0.70833381| PASSED
rgb_lagged_sum| 8| 1000000| 100|0.40294697| PASSED
rgb_lagged_sum| 9| 1000000| 100|0.63587058| PASSED
rgb_lagged_sum| 10| 1000000| 100|0.44264782| PASSED
rgb_lagged_sum| 11| 1000000| 100|0.68265712| PASSED
rgb_lagged_sum| 12| 1000000| 100|0.09088674| PASSED
rgb_lagged_sum| 13| 1000000| 100|0.73280871| PASSED
rgb_lagged_sum| 14| 1000000| 100|0.91610269| PASSED
rgb_lagged_sum| 15| 1000000| 100|0.52377183| PASSED
rgb_lagged_sum| 16| 1000000| 100|0.54507432| PASSED
rgb_lagged_sum| 17| 1000000| 100|0.12436072| PASSED
rgb_lagged_sum| 18| 1000000| 100|0.75817359| PASSED
rgb_lagged_sum| 19| 1000000| 100|0.92098590| PASSED
rgb_lagged_sum| 20| 1000000| 100|0.24942670| PASSED
rgb_lagged_sum| 21| 1000000| 100|0.90198906| PASSED
rgb_lagged_sum| 22| 1000000| 100|0.29765028| PASSED
rgb_lagged_sum| 23| 1000000| 100|0.64622982| PASSED
rgb_lagged_sum| 24| 1000000| 100|0.32519153| PASSED
rgb_lagged_sum| 25| 1000000| 100|0.78321779| PASSED
rgb_lagged_sum| 26| 1000000| 100|0.99840916| WEAK
rgb_lagged_sum| 27| 1000000| 100|0.25324778| PASSED
rgb_lagged_sum| 28| 1000000| 100|0.98251541| PASSED
rgb_lagged_sum| 29| 1000000| 100|0.68916391| PASSED
rgb_lagged_sum| 30| 1000000| 100|0.05570852| PASSED
rgb_lagged_sum| 31| 1000000| 100|0.30522421| PASSED
rgb_lagged_sum| 32| 1000000| 100|0.99929872| WEAK
rgb_kstest_test| 0| 10000| 1000|0.67220840| PASSED
dab_bytedistrib| 0| 51200000| 1|0.64446712| PASSED
dab_dct| 256| 50000| 1|0.95202260| PASSED
Preparing to run test 207. ntuple = 0
dab_filltree| 32| 15000000| 1|0.09593529| PASSED
dab_filltree| 32| 15000000| 1|0.46540473| PASSED
Preparing to run test 208. ntuple = 0
dab_filltree2| 0| 5000000| 1|0.34519652| PASSED
dab_filltree2| 1| 5000000| 1|0.24694486| PASSED
Preparing to run test 209. ntuple = 0
dab_monobit2| 12| 65000000| 1|0.93595240| PASSED
```

3 tests are marked as weak

**/dev/urandom :**

Click here to view results

```
diehard_birthdays| 0| 100| 100|0.04489731| PASSED
diehard_operm5| 0| 1000000| 100|0.98102302| PASSED
diehard_rank_32x32| 0| 40000| 100|0.80720399| PASSED
diehard_rank_6x8| 0| 100000| 100|0.25129153| PASSED
diehard_bitstream| 0| 2097152| 100|0.95556255| PASSED
diehard_opso| 0| 2097152| 100|0.55521693| PASSED
diehard_oqso| 0| 2097152| 100|0.91941987| PASSED
diehard_dna| 0| 2097152| 100|0.23352172| PASSED
diehard_count_1s_str| 0| 256000| 100|0.60912108| PASSED
diehard_count_1s_byt| 0| 256000| 100|0.47545424| PASSED
diehard_parking_lot| 0| 12000| 100|0.61642584| PASSED
diehard_2dsphere| 2| 8000| 100|0.14367357| PASSED
diehard_3dsphere| 3| 4000| 100|0.45610233| PASSED
diehard_squeeze| 0| 100000| 100|0.53733260| PASSED
diehard_sums| 0| 100| 100|0.15714087| PASSED
diehard_runs| 0| 100000| 100|0.48694656| PASSED
diehard_runs| 0| 100000| 100|0.29615453| PASSED
diehard_craps| 0| 200000| 100|0.54351193| PASSED
diehard_craps| 0| 200000| 100|0.97340924| PASSED
marsaglia_tsang_gcd| 0| 10000000| 100|0.32038380| PASSED
marsaglia_tsang_gcd| 0| 10000000| 100|0.15966009| PASSED
sts_monobit| 1| 100000| 100|0.82780276| PASSED
sts_runs| 2| 100000| 100|0.66372170| PASSED
sts_serial| 1| 100000| 100|0.69690502| PASSED
sts_serial| 2| 100000| 100|0.54603984| PASSED
sts_serial| 3| 100000| 100|0.50169411| PASSED
sts_serial| 3| 100000| 100|0.07064586| PASSED
sts_serial| 4| 100000| 100|0.17334216| PASSED
sts_serial| 4| 100000| 100|0.13979783| PASSED
sts_serial| 5| 100000| 100|0.83695398| PASSED
sts_serial| 5| 100000| 100|0.07258805| PASSED
sts_serial| 6| 100000| 100|0.67304762| PASSED
sts_serial| 6| 100000| 100|0.64053099| PASSED
sts_serial| 7| 100000| 100|0.98244793| PASSED
sts_serial| 7| 100000| 100|0.05792291| PASSED
sts_serial| 8| 100000| 100|0.30146615| PASSED
sts_serial| 8| 100000| 100|0.07828512| PASSED
sts_serial| 9| 100000| 100|0.80119364| PASSED
sts_serial| 9| 100000| 100|0.44264581| PASSED
sts_serial| 10| 100000| 100|0.75981289| PASSED
sts_serial| 10| 100000| 100|0.93799740| PASSED
sts_serial| 11| 100000| 100|0.25279644| PASSED
sts_serial| 11| 100000| 100|0.52258261| PASSED
sts_serial| 12| 100000| 100|0.70168523| PASSED
sts_serial| 12| 100000| 100|0.20072352| PASSED
sts_serial| 13| 100000| 100|0.87050967| PASSED
sts_serial| 13| 100000| 100|0.76237414| PASSED
sts_serial| 14| 100000| 100|0.27272393| PASSED
sts_serial| 14| 100000| 100|0.80613522| PASSED
sts_serial| 15| 100000| 100|0.92176493| PASSED
sts_serial| 15| 100000| 100|0.87208395| PASSED
sts_serial| 16| 100000| 100|0.37388632| PASSED
sts_serial| 16| 100000| 100|0.15469900| PASSED
rgb_bitdist| 1| 100000| 100|0.28057802| PASSED
rgb_bitdist| 2| 100000| 100|0.68343411| PASSED
rgb_bitdist| 3| 100000| 100|0.44405469| PASSED
rgb_bitdist| 4| 100000| 100|0.90713693| PASSED
rgb_bitdist| 5| 100000| 100|0.49209205| PASSED
rgb_bitdist| 6| 100000| 100|0.75199988| PASSED
rgb_bitdist| 7| 100000| 100|0.74239445| PASSED
rgb_bitdist| 8| 100000| 100|0.53329955| PASSED
rgb_bitdist| 9| 100000| 100|0.91149445| PASSED
rgb_bitdist| 10| 100000| 100|0.74220741| PASSED
rgb_bitdist| 11| 100000| 100|0.04053006| PASSED
rgb_bitdist| 12| 100000| 100|0.15864202| PASSED
rgb_minimum_distance| 2| 10000| 1000|0.93506783| PASSED
rgb_minimum_distance| 3| 10000| 1000|0.03035361| PASSED
rgb_minimum_distance| 4| 10000| 1000|0.01684604| PASSED
rgb_minimum_distance| 5| 10000| 1000|0.40535950| PASSED
rgb_permutations| 2| 100000| 100|0.73530875| PASSED
rgb_permutations| 3| 100000| 100|0.13793235| PASSED
rgb_permutations| 4| 100000| 100|0.80825360| PASSED
rgb_permutations| 5| 100000| 100|0.82976800| PASSED
rgb_lagged_sum| 0| 1000000| 100|0.30047172| PASSED
rgb_lagged_sum| 1| 1000000| 100|0.02522645| PASSED
rgb_lagged_sum| 2| 1000000| 100|0.25228513| PASSED
rgb_lagged_sum| 3| 1000000| 100|0.91017293| PASSED
rgb_lagged_sum| 4| 1000000| 100|0.31593881| PASSED
rgb_lagged_sum| 5| 1000000| 100|0.59018579| PASSED
rgb_lagged_sum| 6| 1000000| 100|0.62145449| PASSED
rgb_lagged_sum| 7| 1000000| 100|0.52971041| PASSED
rgb_lagged_sum| 8| 1000000| 100|0.69269041| PASSED
rgb_lagged_sum| 9| 1000000| 100|0.92143793| PASSED
rgb_lagged_sum| 10| 1000000| 100|0.70090470| PASSED
rgb_lagged_sum| 11| 1000000| 100|0.96953878| PASSED
rgb_lagged_sum| 12| 1000000| 100|0.06517103| PASSED
rgb_lagged_sum| 13| 1000000| 100|0.87917675| PASSED
rgb_lagged_sum| 14| 1000000| 100|0.79970530| PASSED
rgb_lagged_sum| 15| 1000000| 100|0.73699022| PASSED
rgb_lagged_sum| 16| 1000000| 100|0.61585289| PASSED
rgb_lagged_sum| 17| 1000000| 100|0.30133443| PASSED
rgb_lagged_sum| 18| 1000000| 100|0.97329715| PASSED
rgb_lagged_sum| 19| 1000000| 100|0.09381675| PASSED
rgb_lagged_sum| 20| 1000000| 100|0.57235026| PASSED
rgb_lagged_sum| 21| 1000000| 100|0.46045580| PASSED
rgb_lagged_sum| 22| 1000000| 100|0.90887517| PASSED
rgb_lagged_sum| 23| 1000000| 100|0.64358135| PASSED
rgb_lagged_sum| 24| 1000000| 100|0.94803867| PASSED
rgb_lagged_sum| 25| 1000000| 100|0.40998866| PASSED
rgb_lagged_sum| 26| 1000000| 100|0.81309099| PASSED
rgb_lagged_sum| 27| 1000000| 100|0.61299561| PASSED
rgb_lagged_sum| 28| 1000000| 100|0.74593506| PASSED
rgb_lagged_sum| 29| 1000000| 100|0.73121448| PASSED
rgb_lagged_sum| 30| 1000000| 100|0.25976969| PASSED
rgb_lagged_sum| 31| 1000000| 100|0.00383725| WEAK
rgb_lagged_sum| 32| 1000000| 100|0.01261432| PASSED
rgb_kstest_test| 0| 10000| 1000|0.47923383| PASSED
dab_bytedistrib| 0| 51200000| 1|0.68448302| PASSED
dab_dct| 256| 50000| 1|0.08725468| PASSED
Preparing to run test 207. ntuple = 0
dab_filltree| 32| 15000000| 1|0.66495602| PASSED
dab_filltree| 32| 15000000| 1|0.43040524| PASSED
Preparing to run test 208. ntuple = 0
dab_filltree2| 0| 5000000| 1|0.72723941| PASSED
dab_filltree2| 1| 5000000| 1|0.01631449| PASSED
Preparing to run test 209. ntuple = 0
dab_monobit2| 12| 65000000| 1|0.12068832| PASSED
```

Only 1 test is marked as weak

In conclusion **Flipper Zero** hardware random number generator quality is comparable to **/dev/urandom**