The Random Page

2023-05-27 | [radiclock]
next: Atomic Clock

lol so random

As part of my atomic clock project I also produce random numbers (why not). Radioactive decay is a well known method to generate true randomness because no one can predict which or when an atom will decay. This technique was used for years in the famous HotBits project which is sadly shut down as of 2023. I have a radioactive sample of my own, but, there's a ways to go from a Geiger counter to a number. How does this work?

  1. Radiation from my sample of pitchblende gets detected by one of my radiation sensors. These are the "clicks" you hear from a geiger counter.
  2. There is a timer running all the time. When a pulse from the sensor comes in, take the timestamp of it. If you want to slow down the rate, you can take the time every nth pulse instead. Whatever the setup, do this until you have 4 timestamps.
  3. Do a quick check to make sure the timestamps are in order (in case the timer overflowed)
  4. Take the 4 timestamps, and generate 2 intervals:
  5. If interval0 > interval1, that's a 0. If interval1 > interval0, that's a 1. If the 2 are equal, throw out the sample and try again.

I actually have 2 sensors; one is a classic Geiger–Müller tube, and the other is PIN-diode based. I collect random numbers from each. I didn't know quite what to do with the numbers I collected, so I figured I would publish them live.

The 2 detectors are set up to generate random bits at around the same rate - about 32 bytes every 55 seconds. The full 1024 byte frames shown and linked below will update about once every half hour. Therefore, please do not spam us with requests. Also, be sure to check the ISO 8601 timestamp at the start of each file, and make sure it's somewhat close to the current time. If it isn't, the project is either broken, or you are getting a cached copy (check your browser).

Also, a most important note: the data listed here is published globally, not individually, like HotBits or random.org. In other words, it is not unique to you. I highly recommend you do not use this for security purposes as it it possible another party may have a copy of the data.

From the GM tube (hex format):

2026-03-25T20:35:42.537160+00:00
2bc4f8b937738583ce0d0c7b958e49e71c6012957c12e9aafec0f5308c4b1e36
8214abe39eab9f013e12dac8ee5df28adcd6d6c4958c69f4859fe502bc029870
d3f3cfde9ad8086a5ea3da471023180cd450905a8bc8137a4ae0c27eb1405095
4ee649f8c1f87ea49e627608bd1ee43caa276071f8353030eb5b1979f0c2a5e6
4c9533dd6a4fd17602d0329c7d382614df6481a7ff67d34ca0636522f7c92aa2
1e06eb384164a8b0e8bc1802c2599d7bffc13a418423a89935425012a24cb5d2
3c83c91294da9332610f16f89a1e3b9a860de1c8240f38f3e60672377d3e1794
8ca9096dc98c69bccfb690758e1b1beb7b801f45f7549a93c81a94a8baf77980
d016fa4d14fcef5b43d5e7ee694e963d205ac64e63f97f8b423375d6daac85ec
3912c1a2cf509993946db83790102b139af9fa6b579342e22a7ee387dc74e5cb
c6b9f73c31299b6f80a4c2acfd8f3d588cec1910fe315fcc258b00a30b6f0f18
65e4c791efbadb6d860c1513e4cc76828037219a5ea6ea9e9b1387813c63cd80
8f61703f2fc43ed61f5fb5ad5556cfd4db9bce59db7f2d03626f67f624f51b81
887acad0862eb4474fea59e84cc8802c50c33d0c7607ff539fc37820c99175a6
e751c8e628e19e9cbc588d2851af980a2b2f728223aa9eeb73d875fd24e7422d
81239320517087d141168e36ae7f485850f0fa78a03fb3b088d76947dc6d0ea3
511dbc45724c28f7b769b73aa2d18c9d72310a1a19a1e6cf78163defdfc4800c
984ab4a1e0d4317cff65f918f099752585f2015a886e67ee3301f95da9669bdb
9a63ee1c970eb0679c0b284f90f388052001eb9c20f10741b5b6a2c92b47f1b1
527b9ed4453be17c2ace7b5561d3d80dec5ee715788c1539ae61666ab87a2cde
f34c3ae97e4e547087c59afddd40e6cd21cf9a407e33c84292d3cec22301cd65
f793d087ecd1756a8199229fbf984e2947fcb8ef06aad554ec2dc58fa4803666
eb1e36e6b3b166e75955bc8793f415df02c60e7446a368388144c102e90ce6f2
2e224a1f5ead82c94fe930a17a62b644a310563e1f737bad502cf10373633fad
02474f2c360ff77597503dd8941fedae662cdbdfa3adfe239b778147ee2772a2
311d1da57e6e7d3d8ea79ee1c5476accc77468bf136470e80395244e5d6b54c6
dd9d01c1ba481b8943ea19cb9fbbcf51bf03cc32fad1d01cf42555b923ec9e05
70c326c10a3508f3ae6082c15dd8eaae63676867dfd4d8bb42f17fadcf357581
5475c76d3e08c6b51f1f7df0fb0ba7ff9408e3fa20af52b0a56f3bf2cae4b98e
0403e0047c8176f3c9f7611be89a75a7e1e755f3186b897aafe872255f0aaf65
26fc66ddf64af4b73d48dbf61ba66d5776d5865a3cc3b014e29ab38d01e1aa77
4fa07c647bb9e6d6e9bda479fc790a6c4984c72abdb2275c4b7e038138394172

From the PIN diode (hex format):

2026-03-25T20:33:41.537139+00:00
75b276e393d5047d96eefad0a058d9a59aae106df69ad87c2db965ad4d6828b4
74626042a31970ecc27868088b879721c63407de6260cae930e7ed6362dee1e2
603a6a1bc9012c14cf9f7828f03aee5be7cdf9fedb28d1f646ec498a2ddafd98
4498c67fdc7a4695bfa951ba8fb3eafe289b250f3b425450d798ed2c72bacaec
bdc9fd8e634717c45f5524c6007cc81572b81f79c40d0068f180d1d202ff1f97
cb1bc9b6e9ca62268352f4d333d50a00e64b9154dc388167c55b838dcd689f7f
d26b61e30e840db0f6fe96979aa201ec41ca413fa1d81c62e9ac671da4b25573
5205ef7b40b41c32de06088c39db4952b09d7b1ceb7e5163e03b6559eafd7c6d
57a2332f90ef207e10949bac2e9d537864e823f120047594147c66a762c70348
8c71d342eca91eb6fb267eefb4deab586aa8dc9fdaeceb9b4d5d3fba29101735
aeab9df2be0c31b59339821abd1dd03d51ee6c921c927968b6bc3322442c95b6
9b18038e3b9b4cf925f8be27ae9e5d3b6bcab8cafe2ff386c39e57036633337a
4e2c94e234af45b76ea277c6319d08f0094b05dc161afaeb55f03886a4b4edc1
6520b52293bb499b23b5065a08ee46cc9804ddcd196635c4bcc4dd10506d83a7
4582d0a674b0368eef2aca85a2ad757af0c2fa473e02e532852f82af7df3c04e
46ff6cf17683fc0771f25a2c0183ec48422a1ae02ea9b644739c9a9dc3f50e87
78816fbdde9d5729ba9d8180c1b96e63c44fc7ee4845bd635bd288b17dee2e32
db62533cd0c0fe169082b6658c612bc12216ffa979ae60267107aa26908edae2
6f7efb8565122a1dac96d7c5441cd29a2e5641ae95a9d7743bf41015d8d7d8d3
fa4eee8bc5eb9d9cbc6f4a3185d9aef524ec8d86f91ab07dfe6b2b995a19bafe
0d8802f4ea4502282b238c47af58428dfacc8a32fc81a91fcacbfb487da4c3c8
aeb3e8a4f5aac2aa805a5c83f0d50d6252389593175bdbe47d91c92d073c7ffc
b8e607806796693ddfb4fd1ece48c6901f72539c859865e3f57dae3c80470fb0
00fc6c7a266469aa42c082fc1e2b5cacd943afb7183f4c14e94175d2fd21b848
4b7dcf9c5387064ec42bdd897ac3e5b967d25195a1927351872329d382fe69b7
96defaaa2caf3a525cb08e24674b1afa860f2217bd57be286598ca819a6b7d30
8d8d970064c2d2af10499943b8ec8059c9edcc92a99ce53dcdb9bead1efef9fd
c04faf8b065f040854390a4f94b30d78afc2a53b8acce3f7b68b9a90284394e2
c87940b3f7f9e46035cd08d2cea6752b3072f1158cb60508c1c71ad49c73bc6a
86bf13b6fd4bfbded8612912c1c0d5827338afa011e837fe691c6fcbc6a4a616
41623f2e30c90f79765f94a14d35f055229ae5e11ae01b1f1bb74e1cbc6d1a96
09879ef8d99aab338a724cdf3e9c70cfd2525bf1eecc177c2714647730ec17cc

Ok, so you want decimal digits instead? I've come up with this technique:

  1. Look at each byte. It's a number from 0-255. Throw out any samples greater than 199, and we now have a range from 0-199
  2. Convert those samples to a 3 digit string, then throw away the first digit. Now, we have random numbers from 0-99
  3. Concat those strings into a really long string. Now, we have a sequence of random digits. But, the string can vary in length.
  4. To deliver something with consistent length, I can just trim the string. But by how much? Since the probability of a skipped byte is 56/256, we would expect about 800 of 1024 bytes to be usable samples. There's a 50% chance there will be more than 800 good bytes. But, there's about a 99.99% chance there will more than 750 bytes. I still double check to make sure, but that's what I publish. Of course, that gives 1500 digits.

To determine where to make the cut, look up the binomial distribution probability. It's already built into spreadsheets as BINOM.DIST, which is what I used.

From the GM tube (digits):

2026-03-25T20:35:42.537160+00:00
43968555153331131223494273289618492418709248407530
54302071587159016218933896494005335902880252125408
06946371163524128044903919227494267764804978739326
64589818088930607039961353484891252194657649510679
18025056255638200029670376609901344262300656650068
76882402948957239358653235685353668018627681603118
48475097152254305954341336155606145525622348406909
09400588824417422727232831698454472648688621282277
20916705785061329098789927396651177233571893628053
47480984554416431954078747664226351698856049415511
28649472436188402516499537390063111115240199458609
34122119183028553354946658551935296099284397126347
96623195817385865589274503981103362729362234468071
79897628448095611218078359952032451766814058568888
41408175521043471430357058151736664529354732811235
65224254742772888020606379763605710914638129886914
76408305835862405714491026256120226196281252748061
49240124531737330190361003510193690255549928511476
03561140794436053201563207658182624371778223586959
24422385971394212040215774970206842244765826788412
35975464335464265166469435010147351706295334599152
78417184067084459743642854023054797702898588354721
02981416706304562968930212463474319473307948612298
82686316866231152373804403159963730271794454151751
80614831740244637335551929713914624929296526102561
42675897710699160491190012034936789307849857019386
72273767255987819103502837858535580512953893105308
74963093937499030403876627735317298417990962089881
31312511674808327582766511598542040304242918972754
17678524073722751437951075013802748361722766098718

From the PIN diode (digits):

2026-03-25T20:33:41.537139+00:00
17781847042550608865547416095424458501737704408016
98966663251294200408393551339852079896489998965806
27014420592040589140707338455268529827227049916981
86437940553715596684805244148689429971239695853698
00242114843121961300042802315127829838318251100075
45845629039791314104592707971432137650515462016565
63612898720329647885158205236480285006084057738276
57232826819959018924098762514744322616485572465783
20003532041748202402679899037240136669308238268071
88066859557793638641162353747157901249814757302689
29618108462846210482885134684449825524034259557637
90397458935907844734955887030251512278444852756983
10621998495708097505222685563464809301328134478773
55358106900870520425025396889616800931676930661676
54424233627317229471620250334730752592787008183107
13904401317266422646698268155654579514352029118957
87418657292893851099967999726989999136772546509883
60922244308201409743933422692174963813077038444211
26330118422972509768285446866574496916591621783997
57568811744933743641342676250743539025861336026902
40433540717588664138502969317225649574796470947028
90923113988256494723912545450760278407280350056180
30729844311483563352012574602871157600082238000570
66923030439272677583246376206517338472752556833506
78964337229585038149614615813535413005835070447558
82927642360375263415342389879040015229540725484141
51000094751673536784288946695661859073309279753906
95040884571079487913207594655938823954444067482164
79965308661743481421408205089399265615880634911982
75974118939230155675601755052811986466226598634648

Or, perhaps you want just the raw bytes themselves. Just make sure to trim away the first 33 bytes which are the timestamp header:

Here is the python program I use to generate the reports above.

comments | support | Alnwlsn 2026