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-05-03T15:00:01.432277+00:00
4dfcd5a164e02afed1e5e31cb0f86c81debbcac6c576185f37bd4c565add0014
13cafa0c11673e5c2706c121baf78790f034d5cd431a6aed6aa8adc937c62ac2
1b19395fea790717b3239da2dd26a220b7623eee17a8ee1a3a051e9abc9455f5
147143e22ff7fc96bf46b7aa1d70d536dfc4e3a7d7d2c80354efe84c22ad2737
eb5de07e5701112a30057351ba16f5b289d8bd481ea7ebb5014afd83e402aa05
164dcea57d4742b0b9982c7ea7affa9f341b350d9d899542ede4f612d7739689
b2521e61820157df82233562c0b933b631ef612d5f9f38c137fbc34b1adca673
79535c5d27d0769700d3b30093df807cdfd0705729d9878a6653734a371b13ef
9656e466d78821acf0910fedca9920d95c18ce7114530b3b2aae431e491a9cf3
9bd462576105cbb93ff26db56a4d7ea489ca9adfbffd43e3823621bdc809b0c4
fa05ea09bd45542c23f95652eb7b2302aa4dc82fcdcbd22137d6df6aa80bff02
64ff681e575160a375dd775f766c4d0d711d8332fafaaf7a1ec63d195b2b8eec
01a313032a2ceb0754f299d851ee8e3b4bef1fe0962fbc7bceae679d2497e850
72d203fcb084ab861caadddd8da2e5272947fee967bd08af2f44aedbc202dfb0
9b4e04f951e75103609f2f1656955ef692f869bda5ec188abb3b0d846cb8f388
ae23e5b6e543aaca578b5044e2299b1b97436904cd991e0e3f3a7acf78514182
19021332003a45c5883e161a45e620ce0107026a273e542c4226822ae7b3a293
a80f1c9d6b4180ddee87c1f1c749e248c8d57ad01cbb8592f3be7e701535f466
ad74f46d1f0fe05cc0a9311ac80d4c22eb81cf0bb2c3ed1b496b46f25df78469
c092f64125f28e8f7254b09b7998826c701bb66a72c910045242332e5bbbe9d8
00d317f0d6fa1cda9508e8bba40b71dffa06c10a7449ada4ab6e2037237e9e36
531a52c2cf274fbda3183f4d41ca048d81cf6f711b7726f657a6efcc3c3d0af2
a83deadfe5c2e7cb6d24eb5f50d55d65e2d28dd3ce921782de1129d16ba238de
fc8ff2ca7a7503522c557004932ba70670f43d9016ee7d9f9b5651b6da3a0083
23eb86129ec7e34b1b72679b58b44387015e1f2a21eb754ba1c76ead50743e8f
c51198fd4322fcf84f5baa9cd96eb49f5a99471c6080b7caaa7b1031324e2d0b
c8919c3d70081e181f9b867e19319fcced76eda3c2b7b89bb4f2223819f607ad
2ab416710655049500fc6e26398d98334335f8c503ed70532a50896c3dfc524d
1f7c6b0a1d26526ece8dcd933f22e2617073a7266119e1794776fc0b34093f26
eabee39dc18fbb7c062bb45c603f341fe3c8aa9f575c4906b355734eaf34d96c
501fa9b355340c5006635d52ad4b17e013fb953aa1c9e1a808645eade8a57797
93c17cdda8ae70c95e0aabb336334b3e98795cef0f43a509b17a5b211d7fddf1

From the PIN diode (hex format):

2026-05-03T14:48:50.630391+00:00
ecd7df256d41a17c874da7b64748580166c14e885a7329ea7c2d093424ad20ec
65c595a23e75d53e03e22cf9a44fc0a8f9727837c5cc08d9e5864e695add8f99
5d97626cdcaf3d8a02ac18bae191b484d20489b4c19b0e6f0252cf01cf5b0b46
00e671c320cb28e63fd671cdc70311a4a084d1d442730cb6bdc5f0b20c297537
49a8ddd87e85d4b47d1523de7a5f51965dda88230db7ccc2c057e85869477fa8
cbab61e6f82435427d5107fe31f078e2965a0342ca47eb0608827dd4ab8286c5
eaaed018c6171ec254cfd4d9c07ebc33701cdf6a8df0bf41a6702e2bb05037d6
31ab8aaa7814e5df1489225012c6b1fc526ac8520fc0febbb7811d886854833f
fdda6915a4fec56e751f8e9c12b786f3f47e2e87cad561e944912cbfad7408e2
982a85e394cf894ab50bae4aeca2d761863914ad16b6651c902cd0fe3606934b
f6f9de31d1b01aadd7cfb48b24d0fc404defff4378c8802fc13584c1c1bc4302
22487cf20cb92e2ab87c130c7e2abfce7f353546411c8d13468a317138feac10
b91d8cc6f4566e8c17bf6a3653169994dbf24cfed7e19df53c34214b2c9a44a6
4e9600b019cb5e428911ff585d1a52a2b3824074c8e787a7c45bd075bad61586
43e88702823ee79faf2af82bbca72cb8e5cbfac542dac75b101f8ec8ddb64623
a8613b155c77f74b2ffd0f3e9438ecbf9c92d2757abcb3875a302b58c2c2a7f3
8acd1ad59bf2e04daeeedbbedeae98bba033750a0998c9bb68c16376c60db6b6
b498249f17b26f89adc370e177a174f5d4b13782ae90420f25a54d2b85558377
4ad0d08ba826da7d09ea5b9c811933685b7da6fd9a1c3794109a3ff420917eb7
c987d3f1b8ad4c0a14a75539f95abb6410d877d4be91a9fd008e3854782b2b2d
0b29431a44b6323be2602fded4a5bd2352d754e00b402f0369c1420619aa386c
30a497bce1ee5c37af3c57d15b9905e440fae8e2192723b15a1281d8dd825ebb
2cffb778f95fc98a4dd829869b75eae7579803760378341d2d6e02e5d878abce
90322d2ebdf6080cca46c03495add585aa1ec5f749c2ea36fa9ab8cb4ff9e809
db4d4285533dfb6ca0fa373c5253d59bcc913cee99742c3fa71791a1fa11758e
dc83e8fa0611d44ac0d3f88d3086bdfdce261c04ac801fc75ac6927aaef0f35c
c587c277a7ad8bdb545d44a01b622cf3371d599113b7db76bf21dca9a96fc30f
bd0c7c6a6401a2b045910a3cd4c333327f4da1970af1430671411e054d9373e3
cc3340c03fd4d469e4ed4e9cb89bd2ce0ca8c09aa6cb21c87fd8c53348335bee
94d0f798bc65b41377cb2f1ba2aa8245c5f1a82ed110c7576551efb4dab9ff8f
07ac7092740f93d7131f4814ccf3e061803f014cd14b6f7fb9fa861892a0d8a7
35cbd460d66dc5c10263e256ee3117439ea05f272b18a884d76abc5b0e75088b

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-05-03T15:00:01.432277+00:00
77610042287608298798971824955589768690002019121703
62923906933386354452672606066873559842942725579521
07237935576238623283986223682658053054884885201367
47509170837029125496670384763473395593268701174248
05158186227837897230678101743102700522776525716676
85524426677559522753135737496618155037788230973001
87303553989285518249974595595693559575266615218392
93391851007900472824128741353802831574552719508602
36337245155332922413208311594274673073265655988797
05856309810677266437549167305433890976960509896984
44358682233502707747335506681102000430878196631719
95180877131329315075223098612591434201631903424407
84538142597531504788237403573651801403763271342870
41623941710389087547687494027655780481810396594722
86499446058965243887591332088436743582677087398068
41552751670504533014635822208165302502195000586997
36622226693201070206396284446638304279624768152857
07652835939973722228873346902612215302731609311592
92694926137634291178952773077093320592466537424314
84765521523008122782061416048266514691870023284908
87641113069310167373647110325535265854832682943979
89632463776504412911132719388766606110686194093695
80930141462330174107625643221703824485120447436706
12614422255955868182580031353418589975271403558880
67350194314233177561991073801662439717526734799170
56108059905371289628837023164950784511455661120830
24315534262549591863948384558034562507734280221306
85044900103857415251675397031283428037086182773124
07102938821041476334971215673897252171181152096338
90579343872406438092966352317059879273067985157875

From the PIN diode (digits):

2026-05-03T14:48:50.630391+00:00
37096561243577678271728801029378369015412445095236
73320197496262176203446479926814205597083478059043
53935198087561380272248645803204378093551411028201
91117000139532406313990317646032661512828997781241
17557368263380252135229581509336351383949287880571
27687197365366258107492050900366710608302571303497
74249823309484922688511228064191656612464376805549
71387020202037348018987782068215928783292936048431
63052164971017314256188334264635976845449173160852
42334837748111747462973457207322820128444454064775
49762673803936647767202847935332939388670234722412
85464284241912264291275353706528411970384913567216
85294098861040239106548322534876576052337544546866
78500076259466371788932682627930641635679691178621
34673502306259754243886744849766999116314282703568
97592192197547156248569156461722887935904843889494
67382655777490745287605117100952870493991898138282
80523659237811377395121961167755307444661537657743
33853119743968382509915629255104912566542855481654
63324526833584737610206785579087001619904569004256
84204343451141672668825059964765893582841164470305
93660625705608486451889255756087915305642539357790
18293094874483209538774134551787520318032052294510
02207144504546890812709252497333703097739454548479
09776633836108605560828355456053164463672345611717
42310617749241483489382804722831999098462274929735
94196773398493686027984455298945198318913369691195
15891224060001627669451060955150277761511067061365
30057747155164926305785684551268925466332797517251
91485288018019194727627030699768461699870181808543

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 | patronage | Alnwlsn 2026