{"id":21452662,"url":"https://github.com/nmrr/flipperzero-random-number-quality","last_synced_at":"2025-04-22T10:45:38.240Z","repository":{"id":152609343,"uuid":"581151080","full_name":"nmrr/flipperzero-random-number-quality","owner":"nmrr","description":"An analysis of quality of random number generator of Flipper Zero","archived":false,"fork":false,"pushed_at":"2023-01-07T14:28:29.000Z","size":93,"stargazers_count":6,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2024-11-23T04:33:44.280Z","etag":null,"topics":["dieharder","flipper-zero","flipperzero","random-number-generators","random-numbers"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nmrr.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-12-22T12:08:17.000Z","updated_at":"2024-09-10T20:57:43.000Z","dependencies_parsed_at":null,"dependency_job_id":"66a2e736-8747-41d3-96c3-a31067048e0f","html_url":"https://github.com/nmrr/flipperzero-random-number-quality","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nmrr%2Fflipperzero-random-number-quality","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nmrr%2Fflipperzero-random-number-quality/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nmrr%2Fflipperzero-random-number-quality/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nmrr%2Fflipperzero-random-number-quality/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nmrr","download_url":"https://codeload.github.com/nmrr/flipperzero-random-number-quality/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":235284185,"owners_count":18965104,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dieharder","flipper-zero","flipperzero","random-number-generators","random-numbers"],"created_at":"2024-11-23T04:31:14.846Z","updated_at":"2025-01-23T12:28:56.453Z","avatar_url":"https://github.com/nmrr.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# flipperzero-random-number-quality\nAn analysis of quality of random number generator of Flipper Zero\n\n![](https://github.com/nmrr/flipperzero-random-number-quality/blob/main/img/Flipper_Zero.jpg)\n\nBased on the [**Hello World**](https://github.com/zmactep/flipperzero-hello-world) of [zmactep](https://github.com/zmactep/)\n\n**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\nintegrated analog circuit.*\n\nI'd like verify the quality of random numbers generated by the **Flipper Zero**\n\n## How to generate random numbers ?\n\n**Flipper Zero** toolchain provides two functions to generate random numbers by using hardware generator :\n\n* **uint32_t furi_hal_random_get()** : to obtain 32 bits of random data\n* **void furi_hal_random_fill_buf(uint8_t\\* buf, uint32_t len)** : to fill a buffer of random data\n\n## Build the program\n\nI wrote a program that generates a file filled with 256MB of random data on the SD card (/random.dat)\n\nAssuming the toolchain is already installed, copy **flipper_random** directory to **applications_user**\n\nPlug your **Flipper Zero** and build the program :\n```\n./fbt launch_app APPSRC=applications_user/flipper_random\n```\n\nThe program will automatically be launched after compilation :\n\n\u003cimg src=\"https://github.com/nmrr/flipperzero-random-number-quality/blob/main/img/flipper1.png\" width=20% height=20%\u003e\n\nThe generation takes about 30 minutes. The program will automatically quit after generation\n\nIf you don't want to build the program, just simply copy **flipper_random.fap** on your **Flipper Zero**\n\n## Analysis with dieharder\n\n### With 256MB of data\n\n**dieharder** is a testing and benchmarking tool for random number generators\n\nCopy **/random.dat** file on your computer and launch the following command :\n\n```\ndieharder -a -g 201 -f random.dat\n```\n\n\u003cdetails\u003e\n  \u003csummary\u003eClick here to view results\u003c/summary\u003e\n\n   ```\n      diehard_birthdays|   0|       100|     100|0.55487123|  PASSED  \n         diehard_operm5|   0|   1000000|     100|0.79201568|  PASSED  \n     diehard_rank_32x32|   0|     40000|     100|0.59923892|  PASSED  \n       diehard_rank_6x8|   0|    100000|     100|0.92342072|  PASSED  \n      diehard_bitstream|   0|   2097152|     100|0.94159229|  PASSED  \n           diehard_opso|   0|   2097152|     100|0.00747132|  PASSED  \n           diehard_oqso|   0|   2097152|     100|0.18263591|  PASSED  \n            diehard_dna|   0|   2097152|     100|0.07915675|  PASSED  \n   diehard_count_1s_str|   0|    256000|     100|0.31495403|  PASSED  \n   diehard_count_1s_byt|   0|    256000|     100|0.69912362|  PASSED  \n    diehard_parking_lot|   0|     12000|     100|0.82688871|  PASSED  \n       diehard_2dsphere|   2|      8000|     100|0.44704427|  PASSED  \n       diehard_3dsphere|   3|      4000|     100|0.52652864|  PASSED  \n        diehard_squeeze|   0|    100000|     100|0.51781721|  PASSED  \n           diehard_sums|   0|       100|     100|0.64623799|  PASSED  \n           diehard_runs|   0|    100000|     100|0.99573267|   WEAK   \n           diehard_runs|   0|    100000|     100|0.48267656|  PASSED  \n          diehard_craps|   0|    200000|     100|0.08522731|  PASSED  \n          diehard_craps|   0|    200000|     100|0.08212908|  PASSED  \n    marsaglia_tsang_gcd|   0|  10000000|     100|0.00000003|  FAILED  \n    marsaglia_tsang_gcd|   0|  10000000|     100|0.00053548|   WEAK   \n            sts_monobit|   1|    100000|     100|0.09876225|  PASSED  \n               sts_runs|   2|    100000|     100|0.44896009|  PASSED  \n             sts_serial|   1|    100000|     100|0.72550312|  PASSED  \n             sts_serial|   2|    100000|     100|0.14638226|  PASSED  \n             sts_serial|   3|    100000|     100|0.45251237|  PASSED  \n             sts_serial|   3|    100000|     100|0.77572552|  PASSED  \n             sts_serial|   4|    100000|     100|0.59680397|  PASSED  \n             sts_serial|   4|    100000|     100|0.87343622|  PASSED  \n             sts_serial|   5|    100000|     100|0.39471355|  PASSED  \n             sts_serial|   5|    100000|     100|0.24502794|  PASSED  \n             sts_serial|   6|    100000|     100|0.08909655|  PASSED  \n             sts_serial|   6|    100000|     100|0.10717243|  PASSED  \n             sts_serial|   7|    100000|     100|0.83451597|  PASSED  \n             sts_serial|   7|    100000|     100|0.97964565|  PASSED  \n             sts_serial|   8|    100000|     100|0.36201175|  PASSED  \n             sts_serial|   8|    100000|     100|0.65209729|  PASSED  \n             sts_serial|   9|    100000|     100|0.99071115|  PASSED  \n             sts_serial|   9|    100000|     100|0.17544767|  PASSED  \n             sts_serial|  10|    100000|     100|0.82309444|  PASSED  \n             sts_serial|  10|    100000|     100|0.68136773|  PASSED  \n             sts_serial|  11|    100000|     100|0.43365875|  PASSED  \n             sts_serial|  11|    100000|     100|0.97170671|  PASSED  \n             sts_serial|  12|    100000|     100|0.72900319|  PASSED  \n             sts_serial|  12|    100000|     100|0.99584984|   WEAK   \n             sts_serial|  13|    100000|     100|0.21530249|  PASSED  \n             sts_serial|  13|    100000|     100|0.79026626|  PASSED  \n             sts_serial|  14|    100000|     100|0.12890705|  PASSED  \n             sts_serial|  14|    100000|     100|0.55255830|  PASSED  \n             sts_serial|  15|    100000|     100|0.78891114|  PASSED  \n             sts_serial|  15|    100000|     100|0.98063270|  PASSED  \n             sts_serial|  16|    100000|     100|0.10522510|  PASSED  \n             sts_serial|  16|    100000|     100|0.07350635|  PASSED  \n            rgb_bitdist|   1|    100000|     100|0.98396352|  PASSED  \n            rgb_bitdist|   2|    100000|     100|0.72379672|  PASSED  \n            rgb_bitdist|   3|    100000|     100|0.01351080|  PASSED  \n            rgb_bitdist|   4|    100000|     100|0.95524449|  PASSED  \n            rgb_bitdist|   5|    100000|     100|0.05370261|  PASSED  \n            rgb_bitdist|   6|    100000|     100|0.44257180|  PASSED  \n            rgb_bitdist|   7|    100000|     100|0.03501509|  PASSED  \n            rgb_bitdist|   8|    100000|     100|0.39167067|  PASSED  \n            rgb_bitdist|   9|    100000|     100|0.99180288|  PASSED  \n            rgb_bitdist|  10|    100000|     100|0.82502082|  PASSED  \n            rgb_bitdist|  11|    100000|     100|0.10809183|  PASSED  \n            rgb_bitdist|  12|    100000|     100|0.49863013|  PASSED  \n   rgb_minimum_distance|   2|     10000|    1000|0.59643869|  PASSED  \n   rgb_minimum_distance|   3|     10000|    1000|0.60902822|  PASSED  \n   rgb_minimum_distance|   4|     10000|    1000|0.32342827|  PASSED  \n   rgb_minimum_distance|   5|     10000|    1000|0.97899401|  PASSED  \n       rgb_permutations|   2|    100000|     100|0.02271425|  PASSED  \n       rgb_permutations|   3|    100000|     100|0.28577729|  PASSED  \n       rgb_permutations|   4|    100000|     100|0.68895384|  PASSED  \n       rgb_permutations|   5|    100000|     100|0.38110847|  PASSED  \n         rgb_lagged_sum|   0|   1000000|     100|0.00401051|   WEAK   \n         rgb_lagged_sum|   1|   1000000|     100|0.23456397|  PASSED  \n         rgb_lagged_sum|   2|   1000000|     100|0.01699212|  PASSED  \n         rgb_lagged_sum|   3|   1000000|     100|0.60478263|  PASSED  \n         rgb_lagged_sum|   4|   1000000|     100|0.04943578|  PASSED  \n         rgb_lagged_sum|   5|   1000000|     100|0.15648198|  PASSED  \n         rgb_lagged_sum|   6|   1000000|     100|0.12214976|  PASSED  \n         rgb_lagged_sum|   7|   1000000|     100|0.07300513|  PASSED  \n         rgb_lagged_sum|   8|   1000000|     100|0.71916719|  PASSED  \n         rgb_lagged_sum|   9|   1000000|     100|0.22802820|  PASSED  \n         rgb_lagged_sum|  10|   1000000|     100|0.00123661|   WEAK   \n         rgb_lagged_sum|  11|   1000000|     100|0.29959817|  PASSED  \n         rgb_lagged_sum|  12|   1000000|     100|0.25961032|  PASSED  \n         rgb_lagged_sum|  13|   1000000|     100|0.11422352|  PASSED  \n         rgb_lagged_sum|  14|   1000000|     100|0.16906362|  PASSED  \n         rgb_lagged_sum|  15|   1000000|     100|0.00000005|  FAILED  \n         rgb_lagged_sum|  16|   1000000|     100|0.27559901|  PASSED  \n         rgb_lagged_sum|  17|   1000000|     100|0.22432129|  PASSED  \n         rgb_lagged_sum|  18|   1000000|     100|0.28340080|  PASSED  \n         rgb_lagged_sum|  19|   1000000|     100|0.38629680|  PASSED  \n         rgb_lagged_sum|  20|   1000000|     100|0.44523026|  PASSED  \n         rgb_lagged_sum|  21|   1000000|     100|0.16320412|  PASSED  \n         rgb_lagged_sum|  22|   1000000|     100|0.29625362|  PASSED  \n         rgb_lagged_sum|  23|   1000000|     100|0.31001352|  PASSED  \n         rgb_lagged_sum|  24|   1000000|     100|0.04436115|  PASSED  \n         rgb_lagged_sum|  25|   1000000|     100|0.02613351|  PASSED  \n         rgb_lagged_sum|  26|   1000000|     100|0.05809093|  PASSED  \n         rgb_lagged_sum|  27|   1000000|     100|0.80853774|  PASSED  \n         rgb_lagged_sum|  28|   1000000|     100|0.10499849|  PASSED  \n         rgb_lagged_sum|  29|   1000000|     100|0.01814743|  PASSED  \n         rgb_lagged_sum|  30|   1000000|     100|0.32979792|  PASSED  \n         rgb_lagged_sum|  31|   1000000|     100|0.00085729|   WEAK   \n         rgb_lagged_sum|  32|   1000000|     100|0.02647133|  PASSED  \n        rgb_kstest_test|   0|     10000|    1000|0.08770174|  PASSED  \n        dab_bytedistrib|   0|  51200000|       1|0.49320605|  PASSED  \n                dab_dct| 256|     50000|       1|0.90718786|  PASSED  \n   Preparing to run test 207.  ntuple = 0\n           dab_filltree|  32|  15000000|       1|0.52041788|  PASSED  \n           dab_filltree|  32|  15000000|       1|0.97976842|  PASSED  \n   Preparing to run test 208.  ntuple = 0\n          dab_filltree2|   0|   5000000|       1|0.61874327|  PASSED  \n          dab_filltree2|   1|   5000000|       1|0.74648222|  PASSED  \n   Preparing to run test 209.  ntuple = 0\n           dab_monobit2|  12|  65000000|       1|0.65116997|  PASSED\n   ```\n\u003c/details\u003e\n\n2 tests have failed and 6 tests are marked as weak\n\nThe same test has been done with **256MB** of **/dev/urandom** data from a **Linux** computer :\n\n\u003cdetails\u003e\n  \u003csummary\u003eClick here to view results\u003c/summary\u003e\n\n   ```\n      diehard_birthdays|   0|       100|     100|0.06228484|  PASSED  \n         diehard_operm5|   0|   1000000|     100|0.59723602|  PASSED  \n     diehard_rank_32x32|   0|     40000|     100|0.43907555|  PASSED  \n       diehard_rank_6x8|   0|    100000|     100|0.40014624|  PASSED  \n      diehard_bitstream|   0|   2097152|     100|0.17287854|  PASSED  \n           diehard_opso|   0|   2097152|     100|0.00246277|   WEAK   \n           diehard_oqso|   0|   2097152|     100|0.09822842|  PASSED  \n            diehard_dna|   0|   2097152|     100|0.11161138|  PASSED  \n   diehard_count_1s_str|   0|    256000|     100|0.49999119|  PASSED  \n   diehard_count_1s_byt|   0|    256000|     100|0.23362439|  PASSED  \n    diehard_parking_lot|   0|     12000|     100|0.80220017|  PASSED  \n       diehard_2dsphere|   2|      8000|     100|0.94573686|  PASSED  \n       diehard_3dsphere|   3|      4000|     100|0.74577481|  PASSED  \n        diehard_squeeze|   0|    100000|     100|0.14916488|  PASSED  \n           diehard_sums|   0|       100|     100|0.06679183|  PASSED  \n           diehard_runs|   0|    100000|     100|0.98216693|  PASSED  \n           diehard_runs|   0|    100000|     100|0.68559357|  PASSED  \n          diehard_craps|   0|    200000|     100|0.61910448|  PASSED  \n          diehard_craps|   0|    200000|     100|0.05755020|  PASSED  \n    marsaglia_tsang_gcd|   0|  10000000|     100|0.00000001|  FAILED  \n    marsaglia_tsang_gcd|   0|  10000000|     100|0.00095699|   WEAK   \n            sts_monobit|   1|    100000|     100|0.69389179|  PASSED  \n               sts_runs|   2|    100000|     100|0.16671354|  PASSED  \n             sts_serial|   1|    100000|     100|0.68748875|  PASSED  \n             sts_serial|   2|    100000|     100|0.85633578|  PASSED  \n             sts_serial|   3|    100000|     100|0.94268391|  PASSED  \n             sts_serial|   3|    100000|     100|0.07086450|  PASSED  \n             sts_serial|   4|    100000|     100|0.39714210|  PASSED  \n             sts_serial|   4|    100000|     100|0.31252989|  PASSED  \n             sts_serial|   5|    100000|     100|0.95694002|  PASSED  \n             sts_serial|   5|    100000|     100|0.22962139|  PASSED  \n             sts_serial|   6|    100000|     100|0.98097919|  PASSED  \n             sts_serial|   6|    100000|     100|0.83795708|  PASSED  \n             sts_serial|   7|    100000|     100|0.93683159|  PASSED  \n             sts_serial|   7|    100000|     100|0.79020964|  PASSED  \n             sts_serial|   8|    100000|     100|0.69377516|  PASSED  \n             sts_serial|   8|    100000|     100|0.38116960|  PASSED  \n             sts_serial|   9|    100000|     100|0.65940032|  PASSED  \n             sts_serial|   9|    100000|     100|0.85500230|  PASSED  \n             sts_serial|  10|    100000|     100|0.19849855|  PASSED  \n             sts_serial|  10|    100000|     100|0.16446525|  PASSED  \n             sts_serial|  11|    100000|     100|0.24735793|  PASSED  \n             sts_serial|  11|    100000|     100|0.40482073|  PASSED  \n             sts_serial|  12|    100000|     100|0.42946863|  PASSED  \n             sts_serial|  12|    100000|     100|0.67986759|  PASSED  \n             sts_serial|  13|    100000|     100|0.31904715|  PASSED  \n             sts_serial|  13|    100000|     100|0.89958112|  PASSED  \n             sts_serial|  14|    100000|     100|0.03516112|  PASSED  \n             sts_serial|  14|    100000|     100|0.00572954|  PASSED  \n             sts_serial|  15|    100000|     100|0.25516910|  PASSED  \n             sts_serial|  15|    100000|     100|0.98134393|  PASSED  \n             sts_serial|  16|    100000|     100|0.22681525|  PASSED  \n             sts_serial|  16|    100000|     100|0.55438687|  PASSED  \n            rgb_bitdist|   1|    100000|     100|0.61526582|  PASSED  \n            rgb_bitdist|   2|    100000|     100|0.06936633|  PASSED  \n            rgb_bitdist|   3|    100000|     100|0.40179970|  PASSED  \n            rgb_bitdist|   4|    100000|     100|0.64740032|  PASSED  \n            rgb_bitdist|   5|    100000|     100|0.46472989|  PASSED  \n            rgb_bitdist|   6|    100000|     100|0.07941194|  PASSED  \n            rgb_bitdist|   7|    100000|     100|0.44461086|  PASSED  \n            rgb_bitdist|   8|    100000|     100|0.58109228|  PASSED  \n            rgb_bitdist|   9|    100000|     100|0.70960474|  PASSED  \n            rgb_bitdist|  10|    100000|     100|0.85137858|  PASSED  \n            rgb_bitdist|  11|    100000|     100|0.99935805|   WEAK   \n            rgb_bitdist|  12|    100000|     100|0.70354535|  PASSED  \n   rgb_minimum_distance|   2|     10000|    1000|0.27460885|  PASSED  \n   rgb_minimum_distance|   3|     10000|    1000|0.36311414|  PASSED  \n   rgb_minimum_distance|   4|     10000|    1000|0.58342328|  PASSED  \n   rgb_minimum_distance|   5|     10000|    1000|0.14794446|  PASSED  \n       rgb_permutations|   2|    100000|     100|0.50547110|  PASSED  \n       rgb_permutations|   3|    100000|     100|0.18354717|  PASSED  \n       rgb_permutations|   4|    100000|     100|0.84601710|  PASSED  \n       rgb_permutations|   5|    100000|     100|0.63598280|  PASSED  \n         rgb_lagged_sum|   0|   1000000|     100|0.37287317|  PASSED  \n         rgb_lagged_sum|   1|   1000000|     100|0.75416576|  PASSED  \n         rgb_lagged_sum|   2|   1000000|     100|0.63961879|  PASSED  \n         rgb_lagged_sum|   3|   1000000|     100|0.01077529|  PASSED  \n         rgb_lagged_sum|   4|   1000000|     100|0.18887727|  PASSED  \n         rgb_lagged_sum|   5|   1000000|     100|0.16337583|  PASSED  \n         rgb_lagged_sum|   6|   1000000|     100|0.05431404|  PASSED  \n         rgb_lagged_sum|   7|   1000000|     100|0.01679565|  PASSED  \n         rgb_lagged_sum|   8|   1000000|     100|0.10235939|  PASSED  \n         rgb_lagged_sum|   9|   1000000|     100|0.58127552|  PASSED  \n         rgb_lagged_sum|  10|   1000000|     100|0.00843829|  PASSED  \n         rgb_lagged_sum|  11|   1000000|     100|0.08131415|  PASSED  \n         rgb_lagged_sum|  12|   1000000|     100|0.24835950|  PASSED  \n         rgb_lagged_sum|  13|   1000000|     100|0.39861688|  PASSED  \n         rgb_lagged_sum|  14|   1000000|     100|0.47914954|  PASSED  \n         rgb_lagged_sum|  15|   1000000|     100|0.00002898|   WEAK   \n         rgb_lagged_sum|  16|   1000000|     100|0.98131072|  PASSED  \n         rgb_lagged_sum|  17|   1000000|     100|0.80381793|  PASSED  \n         rgb_lagged_sum|  18|   1000000|     100|0.47926388|  PASSED  \n         rgb_lagged_sum|  19|   1000000|     100|0.05503440|  PASSED  \n         rgb_lagged_sum|  20|   1000000|     100|0.31173700|  PASSED  \n         rgb_lagged_sum|  21|   1000000|     100|0.96872067|  PASSED  \n         rgb_lagged_sum|  22|   1000000|     100|0.88674529|  PASSED  \n         rgb_lagged_sum|  23|   1000000|     100|0.16043397|  PASSED  \n         rgb_lagged_sum|  24|   1000000|     100|0.61149972|  PASSED  \n         rgb_lagged_sum|  25|   1000000|     100|0.75335182|  PASSED  \n         rgb_lagged_sum|  26|   1000000|     100|0.98130242|  PASSED  \n         rgb_lagged_sum|  27|   1000000|     100|0.03450865|  PASSED  \n         rgb_lagged_sum|  28|   1000000|     100|0.01963495|  PASSED  \n         rgb_lagged_sum|  29|   1000000|     100|0.75846016|  PASSED  \n         rgb_lagged_sum|  30|   1000000|     100|0.44591545|  PASSED  \n         rgb_lagged_sum|  31|   1000000|     100|0.00000137|   WEAK   \n         rgb_lagged_sum|  32|   1000000|     100|0.27222461|  PASSED  \n        rgb_kstest_test|   0|     10000|    1000|0.68380811|  PASSED  \n        dab_bytedistrib|   0|  51200000|       1|0.05530537|  PASSED  \n                dab_dct| 256|     50000|       1|0.88665003|  PASSED  \n   Preparing to run test 207.  ntuple = 0\n           dab_filltree|  32|  15000000|       1|0.15196603|  PASSED  \n           dab_filltree|  32|  15000000|       1|0.33800187|  PASSED  \n   Preparing to run test 208.  ntuple = 0\n          dab_filltree2|   0|   5000000|       1|0.84766841|  PASSED  \n          dab_filltree2|   1|   5000000|       1|0.00464316|   WEAK   \n   Preparing to run test 209.  ntuple = 0\n           dab_monobit2|  12|  65000000|       1|0.69926158|  PASSED\n   ```\n\u003c/details\u003e\n\nOnly 1 test has failed and 6 tests are marked as weak\n\n### With 4GB of data\n\nThese tests have been done with a larger dataset : 4GB\n\n**Flipper Zero :**\n\n\u003cdetails\u003e\n  \u003csummary\u003eClick here to view results\u003c/summary\u003e\n\n   ```\n      diehard_birthdays|   0|       100|     100|0.11059818|  PASSED  \n         diehard_operm5|   0|   1000000|     100|0.46243241|  PASSED  \n     diehard_rank_32x32|   0|     40000|     100|0.94015510|  PASSED  \n       diehard_rank_6x8|   0|    100000|     100|0.06733267|  PASSED  \n      diehard_bitstream|   0|   2097152|     100|0.19395269|  PASSED  \n           diehard_opso|   0|   2097152|     100|0.88003794|  PASSED  \n           diehard_oqso|   0|   2097152|     100|0.94872400|  PASSED  \n            diehard_dna|   0|   2097152|     100|0.30016367|  PASSED  \n   diehard_count_1s_str|   0|    256000|     100|0.20777586|  PASSED  \n   diehard_count_1s_byt|   0|    256000|     100|0.79506176|  PASSED  \n    diehard_parking_lot|   0|     12000|     100|0.25422977|  PASSED  \n       diehard_2dsphere|   2|      8000|     100|0.72884093|  PASSED  \n       diehard_3dsphere|   3|      4000|     100|0.95282276|  PASSED  \n        diehard_squeeze|   0|    100000|     100|0.04250899|  PASSED  \n           diehard_sums|   0|       100|     100|0.13981924|  PASSED  \n           diehard_runs|   0|    100000|     100|0.13508787|  PASSED  \n           diehard_runs|   0|    100000|     100|0.02455145|  PASSED  \n          diehard_craps|   0|    200000|     100|0.96194561|  PASSED  \n          diehard_craps|   0|    200000|     100|0.63547515|  PASSED  \n    marsaglia_tsang_gcd|   0|  10000000|     100|0.83452275|  PASSED  \n    marsaglia_tsang_gcd|   0|  10000000|     100|0.82545057|  PASSED  \n            sts_monobit|   1|    100000|     100|0.68486675|  PASSED  \n               sts_runs|   2|    100000|     100|0.91771409|  PASSED  \n             sts_serial|   1|    100000|     100|0.58359946|  PASSED  \n             sts_serial|   2|    100000|     100|0.92654385|  PASSED  \n             sts_serial|   3|    100000|     100|0.65764270|  PASSED  \n             sts_serial|   3|    100000|     100|0.98824281|  PASSED  \n             sts_serial|   4|    100000|     100|0.35597012|  PASSED  \n             sts_serial|   4|    100000|     100|0.53650061|  PASSED  \n             sts_serial|   5|    100000|     100|0.62396496|  PASSED  \n             sts_serial|   5|    100000|     100|0.36307390|  PASSED  \n             sts_serial|   6|    100000|     100|0.28946507|  PASSED  \n             sts_serial|   6|    100000|     100|0.28365471|  PASSED  \n             sts_serial|   7|    100000|     100|0.49950854|  PASSED  \n             sts_serial|   7|    100000|     100|0.13454074|  PASSED  \n             sts_serial|   8|    100000|     100|0.52850097|  PASSED  \n             sts_serial|   8|    100000|     100|0.72954489|  PASSED  \n             sts_serial|   9|    100000|     100|0.62072123|  PASSED  \n             sts_serial|   9|    100000|     100|0.99779751|   WEAK   \n             sts_serial|  10|    100000|     100|0.80344215|  PASSED  \n             sts_serial|  10|    100000|     100|0.54662822|  PASSED  \n             sts_serial|  11|    100000|     100|0.77730946|  PASSED  \n             sts_serial|  11|    100000|     100|0.72394364|  PASSED  \n             sts_serial|  12|    100000|     100|0.81524608|  PASSED  \n             sts_serial|  12|    100000|     100|0.94724026|  PASSED  \n             sts_serial|  13|    100000|     100|0.16490808|  PASSED  \n             sts_serial|  13|    100000|     100|0.64049681|  PASSED  \n             sts_serial|  14|    100000|     100|0.80427373|  PASSED  \n             sts_serial|  14|    100000|     100|0.68417802|  PASSED  \n             sts_serial|  15|    100000|     100|0.26721027|  PASSED  \n             sts_serial|  15|    100000|     100|0.26323260|  PASSED  \n             sts_serial|  16|    100000|     100|0.98447926|  PASSED  \n             sts_serial|  16|    100000|     100|0.15718959|  PASSED  \n            rgb_bitdist|   1|    100000|     100|0.04796896|  PASSED  \n            rgb_bitdist|   2|    100000|     100|0.67467531|  PASSED  \n            rgb_bitdist|   3|    100000|     100|0.73784137|  PASSED  \n            rgb_bitdist|   4|    100000|     100|0.26420347|  PASSED  \n            rgb_bitdist|   5|    100000|     100|0.81311612|  PASSED  \n            rgb_bitdist|   6|    100000|     100|0.57561992|  PASSED  \n            rgb_bitdist|   7|    100000|     100|0.38384323|  PASSED  \n            rgb_bitdist|   8|    100000|     100|0.01813294|  PASSED  \n            rgb_bitdist|   9|    100000|     100|0.66792440|  PASSED  \n            rgb_bitdist|  10|    100000|     100|0.53244433|  PASSED  \n            rgb_bitdist|  11|    100000|     100|0.98652471|  PASSED  \n            rgb_bitdist|  12|    100000|     100|0.65105991|  PASSED  \n   rgb_minimum_distance|   2|     10000|    1000|0.23083645|  PASSED  \n   rgb_minimum_distance|   3|     10000|    1000|0.70524844|  PASSED  \n   rgb_minimum_distance|   4|     10000|    1000|0.48583046|  PASSED  \n   rgb_minimum_distance|   5|     10000|    1000|0.30933062|  PASSED  \n       rgb_permutations|   2|    100000|     100|0.60895705|  PASSED  \n       rgb_permutations|   3|    100000|     100|0.21941196|  PASSED  \n       rgb_permutations|   4|    100000|     100|0.73590163|  PASSED  \n       rgb_permutations|   5|    100000|     100|0.07132175|  PASSED  \n         rgb_lagged_sum|   0|   1000000|     100|0.38382409|  PASSED  \n         rgb_lagged_sum|   1|   1000000|     100|0.70103574|  PASSED  \n         rgb_lagged_sum|   2|   1000000|     100|0.32942564|  PASSED  \n         rgb_lagged_sum|   3|   1000000|     100|0.16065528|  PASSED  \n         rgb_lagged_sum|   4|   1000000|     100|0.04307075|  PASSED  \n         rgb_lagged_sum|   5|   1000000|     100|0.36550579|  PASSED  \n         rgb_lagged_sum|   6|   1000000|     100|0.76352715|  PASSED  \n         rgb_lagged_sum|   7|   1000000|     100|0.70833381|  PASSED  \n         rgb_lagged_sum|   8|   1000000|     100|0.40294697|  PASSED  \n         rgb_lagged_sum|   9|   1000000|     100|0.63587058|  PASSED  \n         rgb_lagged_sum|  10|   1000000|     100|0.44264782|  PASSED  \n         rgb_lagged_sum|  11|   1000000|     100|0.68265712|  PASSED  \n         rgb_lagged_sum|  12|   1000000|     100|0.09088674|  PASSED  \n         rgb_lagged_sum|  13|   1000000|     100|0.73280871|  PASSED  \n         rgb_lagged_sum|  14|   1000000|     100|0.91610269|  PASSED  \n         rgb_lagged_sum|  15|   1000000|     100|0.52377183|  PASSED  \n         rgb_lagged_sum|  16|   1000000|     100|0.54507432|  PASSED  \n         rgb_lagged_sum|  17|   1000000|     100|0.12436072|  PASSED  \n         rgb_lagged_sum|  18|   1000000|     100|0.75817359|  PASSED  \n         rgb_lagged_sum|  19|   1000000|     100|0.92098590|  PASSED  \n         rgb_lagged_sum|  20|   1000000|     100|0.24942670|  PASSED  \n         rgb_lagged_sum|  21|   1000000|     100|0.90198906|  PASSED  \n         rgb_lagged_sum|  22|   1000000|     100|0.29765028|  PASSED  \n         rgb_lagged_sum|  23|   1000000|     100|0.64622982|  PASSED  \n         rgb_lagged_sum|  24|   1000000|     100|0.32519153|  PASSED  \n         rgb_lagged_sum|  25|   1000000|     100|0.78321779|  PASSED  \n         rgb_lagged_sum|  26|   1000000|     100|0.99840916|   WEAK   \n         rgb_lagged_sum|  27|   1000000|     100|0.25324778|  PASSED  \n         rgb_lagged_sum|  28|   1000000|     100|0.98251541|  PASSED  \n         rgb_lagged_sum|  29|   1000000|     100|0.68916391|  PASSED  \n         rgb_lagged_sum|  30|   1000000|     100|0.05570852|  PASSED  \n         rgb_lagged_sum|  31|   1000000|     100|0.30522421|  PASSED  \n         rgb_lagged_sum|  32|   1000000|     100|0.99929872|   WEAK   \n        rgb_kstest_test|   0|     10000|    1000|0.67220840|  PASSED  \n        dab_bytedistrib|   0|  51200000|       1|0.64446712|  PASSED  \n                dab_dct| 256|     50000|       1|0.95202260|  PASSED  \n   Preparing to run test 207.  ntuple = 0\n           dab_filltree|  32|  15000000|       1|0.09593529|  PASSED  \n           dab_filltree|  32|  15000000|       1|0.46540473|  PASSED  \n   Preparing to run test 208.  ntuple = 0\n          dab_filltree2|   0|   5000000|       1|0.34519652|  PASSED  \n          dab_filltree2|   1|   5000000|       1|0.24694486|  PASSED  \n   Preparing to run test 209.  ntuple = 0\n           dab_monobit2|  12|  65000000|       1|0.93595240|  PASSED\n   ```\n\u003c/details\u003e\n\n3 tests are marked as weak\n\n**/dev/urandom :**\n\n\u003cdetails\u003e\n  \u003csummary\u003eClick here to view results\u003c/summary\u003e\n\n   ```\n      diehard_birthdays|   0|       100|     100|0.04489731|  PASSED  \n         diehard_operm5|   0|   1000000|     100|0.98102302|  PASSED  \n     diehard_rank_32x32|   0|     40000|     100|0.80720399|  PASSED  \n       diehard_rank_6x8|   0|    100000|     100|0.25129153|  PASSED  \n      diehard_bitstream|   0|   2097152|     100|0.95556255|  PASSED  \n           diehard_opso|   0|   2097152|     100|0.55521693|  PASSED  \n           diehard_oqso|   0|   2097152|     100|0.91941987|  PASSED  \n            diehard_dna|   0|   2097152|     100|0.23352172|  PASSED  \n   diehard_count_1s_str|   0|    256000|     100|0.60912108|  PASSED  \n   diehard_count_1s_byt|   0|    256000|     100|0.47545424|  PASSED  \n    diehard_parking_lot|   0|     12000|     100|0.61642584|  PASSED  \n       diehard_2dsphere|   2|      8000|     100|0.14367357|  PASSED  \n       diehard_3dsphere|   3|      4000|     100|0.45610233|  PASSED  \n        diehard_squeeze|   0|    100000|     100|0.53733260|  PASSED  \n           diehard_sums|   0|       100|     100|0.15714087|  PASSED  \n           diehard_runs|   0|    100000|     100|0.48694656|  PASSED  \n           diehard_runs|   0|    100000|     100|0.29615453|  PASSED  \n          diehard_craps|   0|    200000|     100|0.54351193|  PASSED  \n          diehard_craps|   0|    200000|     100|0.97340924|  PASSED  \n    marsaglia_tsang_gcd|   0|  10000000|     100|0.32038380|  PASSED  \n    marsaglia_tsang_gcd|   0|  10000000|     100|0.15966009|  PASSED  \n            sts_monobit|   1|    100000|     100|0.82780276|  PASSED  \n               sts_runs|   2|    100000|     100|0.66372170|  PASSED  \n             sts_serial|   1|    100000|     100|0.69690502|  PASSED  \n             sts_serial|   2|    100000|     100|0.54603984|  PASSED  \n             sts_serial|   3|    100000|     100|0.50169411|  PASSED  \n             sts_serial|   3|    100000|     100|0.07064586|  PASSED  \n             sts_serial|   4|    100000|     100|0.17334216|  PASSED  \n             sts_serial|   4|    100000|     100|0.13979783|  PASSED  \n             sts_serial|   5|    100000|     100|0.83695398|  PASSED  \n             sts_serial|   5|    100000|     100|0.07258805|  PASSED  \n             sts_serial|   6|    100000|     100|0.67304762|  PASSED  \n             sts_serial|   6|    100000|     100|0.64053099|  PASSED  \n             sts_serial|   7|    100000|     100|0.98244793|  PASSED  \n             sts_serial|   7|    100000|     100|0.05792291|  PASSED  \n             sts_serial|   8|    100000|     100|0.30146615|  PASSED  \n             sts_serial|   8|    100000|     100|0.07828512|  PASSED  \n             sts_serial|   9|    100000|     100|0.80119364|  PASSED  \n             sts_serial|   9|    100000|     100|0.44264581|  PASSED  \n             sts_serial|  10|    100000|     100|0.75981289|  PASSED  \n             sts_serial|  10|    100000|     100|0.93799740|  PASSED  \n             sts_serial|  11|    100000|     100|0.25279644|  PASSED  \n             sts_serial|  11|    100000|     100|0.52258261|  PASSED  \n             sts_serial|  12|    100000|     100|0.70168523|  PASSED  \n             sts_serial|  12|    100000|     100|0.20072352|  PASSED  \n             sts_serial|  13|    100000|     100|0.87050967|  PASSED  \n             sts_serial|  13|    100000|     100|0.76237414|  PASSED  \n             sts_serial|  14|    100000|     100|0.27272393|  PASSED  \n             sts_serial|  14|    100000|     100|0.80613522|  PASSED  \n             sts_serial|  15|    100000|     100|0.92176493|  PASSED  \n             sts_serial|  15|    100000|     100|0.87208395|  PASSED  \n             sts_serial|  16|    100000|     100|0.37388632|  PASSED  \n             sts_serial|  16|    100000|     100|0.15469900|  PASSED  \n            rgb_bitdist|   1|    100000|     100|0.28057802|  PASSED  \n            rgb_bitdist|   2|    100000|     100|0.68343411|  PASSED  \n            rgb_bitdist|   3|    100000|     100|0.44405469|  PASSED  \n            rgb_bitdist|   4|    100000|     100|0.90713693|  PASSED  \n            rgb_bitdist|   5|    100000|     100|0.49209205|  PASSED  \n            rgb_bitdist|   6|    100000|     100|0.75199988|  PASSED  \n            rgb_bitdist|   7|    100000|     100|0.74239445|  PASSED  \n            rgb_bitdist|   8|    100000|     100|0.53329955|  PASSED  \n            rgb_bitdist|   9|    100000|     100|0.91149445|  PASSED  \n            rgb_bitdist|  10|    100000|     100|0.74220741|  PASSED  \n            rgb_bitdist|  11|    100000|     100|0.04053006|  PASSED  \n            rgb_bitdist|  12|    100000|     100|0.15864202|  PASSED  \n   rgb_minimum_distance|   2|     10000|    1000|0.93506783|  PASSED  \n   rgb_minimum_distance|   3|     10000|    1000|0.03035361|  PASSED  \n   rgb_minimum_distance|   4|     10000|    1000|0.01684604|  PASSED  \n   rgb_minimum_distance|   5|     10000|    1000|0.40535950|  PASSED  \n       rgb_permutations|   2|    100000|     100|0.73530875|  PASSED  \n       rgb_permutations|   3|    100000|     100|0.13793235|  PASSED  \n       rgb_permutations|   4|    100000|     100|0.80825360|  PASSED  \n       rgb_permutations|   5|    100000|     100|0.82976800|  PASSED  \n         rgb_lagged_sum|   0|   1000000|     100|0.30047172|  PASSED  \n         rgb_lagged_sum|   1|   1000000|     100|0.02522645|  PASSED  \n         rgb_lagged_sum|   2|   1000000|     100|0.25228513|  PASSED  \n         rgb_lagged_sum|   3|   1000000|     100|0.91017293|  PASSED  \n         rgb_lagged_sum|   4|   1000000|     100|0.31593881|  PASSED  \n         rgb_lagged_sum|   5|   1000000|     100|0.59018579|  PASSED  \n         rgb_lagged_sum|   6|   1000000|     100|0.62145449|  PASSED  \n         rgb_lagged_sum|   7|   1000000|     100|0.52971041|  PASSED  \n         rgb_lagged_sum|   8|   1000000|     100|0.69269041|  PASSED  \n         rgb_lagged_sum|   9|   1000000|     100|0.92143793|  PASSED  \n         rgb_lagged_sum|  10|   1000000|     100|0.70090470|  PASSED  \n         rgb_lagged_sum|  11|   1000000|     100|0.96953878|  PASSED  \n         rgb_lagged_sum|  12|   1000000|     100|0.06517103|  PASSED  \n         rgb_lagged_sum|  13|   1000000|     100|0.87917675|  PASSED  \n         rgb_lagged_sum|  14|   1000000|     100|0.79970530|  PASSED  \n         rgb_lagged_sum|  15|   1000000|     100|0.73699022|  PASSED  \n         rgb_lagged_sum|  16|   1000000|     100|0.61585289|  PASSED  \n         rgb_lagged_sum|  17|   1000000|     100|0.30133443|  PASSED  \n         rgb_lagged_sum|  18|   1000000|     100|0.97329715|  PASSED  \n         rgb_lagged_sum|  19|   1000000|     100|0.09381675|  PASSED  \n         rgb_lagged_sum|  20|   1000000|     100|0.57235026|  PASSED  \n         rgb_lagged_sum|  21|   1000000|     100|0.46045580|  PASSED  \n         rgb_lagged_sum|  22|   1000000|     100|0.90887517|  PASSED  \n         rgb_lagged_sum|  23|   1000000|     100|0.64358135|  PASSED  \n         rgb_lagged_sum|  24|   1000000|     100|0.94803867|  PASSED  \n         rgb_lagged_sum|  25|   1000000|     100|0.40998866|  PASSED  \n         rgb_lagged_sum|  26|   1000000|     100|0.81309099|  PASSED  \n         rgb_lagged_sum|  27|   1000000|     100|0.61299561|  PASSED  \n         rgb_lagged_sum|  28|   1000000|     100|0.74593506|  PASSED  \n         rgb_lagged_sum|  29|   1000000|     100|0.73121448|  PASSED  \n         rgb_lagged_sum|  30|   1000000|     100|0.25976969|  PASSED  \n         rgb_lagged_sum|  31|   1000000|     100|0.00383725|   WEAK   \n         rgb_lagged_sum|  32|   1000000|     100|0.01261432|  PASSED  \n        rgb_kstest_test|   0|     10000|    1000|0.47923383|  PASSED  \n        dab_bytedistrib|   0|  51200000|       1|0.68448302|  PASSED  \n                dab_dct| 256|     50000|       1|0.08725468|  PASSED  \n   Preparing to run test 207.  ntuple = 0\n           dab_filltree|  32|  15000000|       1|0.66495602|  PASSED  \n           dab_filltree|  32|  15000000|       1|0.43040524|  PASSED  \n   Preparing to run test 208.  ntuple = 0\n          dab_filltree2|   0|   5000000|       1|0.72723941|  PASSED  \n          dab_filltree2|   1|   5000000|       1|0.01631449|  PASSED  \n   Preparing to run test 209.  ntuple = 0\n           dab_monobit2|  12|  65000000|       1|0.12068832|  PASSED\n   ```\n\u003c/details\u003e\n\nOnly 1 test is marked as weak\n\nIn conclusion **Flipper Zero** hardware random number generator quality is comparable to **/dev/urandom**\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnmrr%2Fflipperzero-random-number-quality","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnmrr%2Fflipperzero-random-number-quality","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnmrr%2Fflipperzero-random-number-quality/lists"}