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):

2025-09-06T17:18:08.799764+00:00
c6e65cccae85b8b694726f010b41f28920f80ab98e1fbefdd9b0983c002e4e6f
f15fb7077cbde8d8c3380815894773617bab2dd460c852d19b9a3af1cd75e67e
0726d466ac143bc236e96ab49ce19e69fb552a8ebde67065eec30d3af96c01cc
e8bd0b51adef677e9e48a02d5b2e3a15aa326fb27973272c231ecb49e758adcc
721e79fa9e4a91cb4aac831a486dbd00eafaf788f4c993774eb37d0aeba272f6
355dcc5f9eb7c0375babd0cdb7aadbcc44a3e70fe6507df48f1cb4fab4780641
bbcb44ea39a645421bf1df49536560122935a1967a3fc839662b1ef2b1153026
fa1ea5a6ed17384aab0e083a9796d5b65a3ff10986fd559dca9d9c4ecf4e77a9
cf4d0d561de4f75536f60055a0fbb4230c21f86c74ee190d80426860ec167aad
554721068370aa5bce59ba1cff83a1bc7a9a6e9822151b215a75a1f783362cf4
cdf51bc7b5d442f821e5593e7e2abeaeecb40ac1c0e316fe88e8c64339d5f3e0
66ad57d1abca734faa43b02847e7f9163a541175130a3f54625fe37c74f47d44
8fb72fee7e06140ec2cb27c926cefd03acefe195df2bc4421d3cabe0cfda2803
ed5aba9fe140b3ecfd8228331066a5db7605702684a1d03b008f8cc5c6525348
f4873c20d71020a28eb7ddf6222c413c6d45eb7a5bc43e3728d8f7d09ce11ebe
21bac8151b0023e3d6a3a50a9a04e5a463ce331db024636ac404e9646a5703b9
3992039bd0a5d0c0707414e0c719b518ae86490e2d05a69c00e99432b7b196cc
0b0beb4112ca39d237048132cc852208c0c4ef8febf53e67508fb7d4aa2230c8
bb13f24077fa47a98b6726b616d67b0ba4cdc0cdceab8bed5224cf24b3d33110
1e6a60bece6d25f414b35f89976b09c8b656c268fc10a9f56bf383af6b307b97
a668c76b6b6c4bf2ccc59e9bbe35f1bb6bfd50967134abe48d28160409a225f0
fb61d8b16d50a69f83321d78dfb08a824a29b16a92f32f780ee413ec4c836d7e
4101f9d091bd4f6c42195507dcaafff1e4d056aec90bdaf72d881557fbcc2998
6c0fb8d37f21a5ea5fe2f3a677e145fe8a93af368a7bcd21998e561f1ae1b32e
50f32310021d152f0f6316453662f50185d95c4f3f8dd2274e2e084a9cc7bc94
800e0c1de681323d836fd3031b7772541c5fa793666177ba3a6986240c618874
67f2bb9158c8cfa46e5c340ba907ced7fd352e440d6afb24adf1b62bc05ef0fe
2783b51c6ee75a7e98a7efe9373125e07d4d358ed56897a503547e44456426b5
28931598e829cda300e8e79360469b90d4b2afd865fb9f6600c414484266cc38
ca1c98740fb65efeb5f594e4825f09c0375f50a3ce04760f1047809aa6d21097
8d85ec1f691c8248a8fc1d616e8f880d08e72324497b9403f12c8d9626490655
84991ed0ca4e6437d537c30ebd081af5867773524b056e8f6e0f038bb2a29047

From the PIN diode (hex format):

2025-12-14T01:37:53.993638+00:00
988184453c4fd76249e1519550bce8f2cd8a748975ab424978d16ca826970370
237b411a40ddf3f4f90eba975befa8bbe84696fba9f6085266084198b1034f56
1205dfd524fe21ed4a78819845c41f74603cab8a8bc766e9aa2b1cc9fbf73183
4e9a253861a5c92c6643cf1053ac808143e935deea1498a29feb8da43aab4727
7d9a8d817b76f53cc589a9e6033cb0e95cdd4be9fc59bb254709300be28b4cb9
2af53106d7d409c7db2c37a8d00b69aa3b5459ae2ee25e6b3b8505beaf9fc4e7
06b6cb8f66c4c050ca8b133be964224cfe0ca834af3865456f01737e25492735
8b348bf8d27d0696256b2c4dc336ef03f44df1070359ea2b7f0466d6d3c883eb
d40b6fad6f4d71cb0f9bf02ed52f209e23e2a061fc22c08effdeff49752567d9
dd3f7c62615df0c195d490a58c4c79fa9b53e3ac04ee57e0daf32bd8a4901251
669ff0335be2da7ec970202c86d9a8d55bca91ecdd425e6aa401c70b25a9eb2b
43f89b95b9277acb9aaca2472451dfed2531622040cbee389ec23910fac54eb8
80b0dbbfa25417733cbc1eae8a7325c471608c6ca4a2f2e2460f565c29865975
0a8f15a8f8147dc515eab8f0afbb1ad66cc353daec43f764b959dbb11c235934
1432df2a8958ebb536b17f28818e8e3374ceb5155dcf1e114158231a6113461e
240fd623b60cc5f0d713a031757c773110bfc07442da7beb16f5040abff91f96
0555c03af6e97e5e9813f83620c8fe92396119791d781fa8ec63e8f2345958b0
daa02811031f874e7e56cd0fbd132330a1a6582f9d17818a22062f8fd5aeb33d
45a943207c1597076cd6ad5d5ab838b2dbc2f8e40b78d2c3a677c1837199516f
73091c9dc7c994dfbc83c38608b3088c2c1686d973706cc40cafa44073687b4c
d7d58ceb45e07ececf9bd61c0b3ba8901fd1fa85988a8a39844fe1021ba203d9
fd76792e4ddad89b40c1a77d0669bde96616bf3ac83a349b20618e5004d5c684
c6531744346c439dfbbd88187dbca7a80f95413e2870fa01bc5316ca9f02fd0e
ec3075dc77f185483b4977ec07987f64920eddec08d3b7e393439fd842e226f0
d5174d062b475454acc363df8afd8dca38bb24772b5dc847ef8278f1768c8c92
2e4288772177d572e1b3f1df3a3f332e85facf65f4ccbc692c2c54128e8f9fb8
6df8c12502bfeb4e68a8b8902adc838a76d19cb804ebe721611b2fcce7a8909c
a6983be0a461303b69d6e42b28d038e8f40ace262a7f94695c4751fb8c0d3126
20a41d2060b6f6b51235c6d4967ff21c8d35de52a3853248f734c048d2266e28
59f31d257faa0712e532509988d8cc75daa40124db091b4fea44ad72eb549a98
d1b3a4611d54dfc9c620278ce2144a11dda980ea5b9aa08c72ff190a59bd27b6
670a3c706f26f2ef72918c6306fb6e1b09f4937bf6621111f6a5b84fde2cf4e5

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):

2025-09-06T17:18:08.799764+00:00
98927433848248141101116537321085423190765260004678
11958307248995560821377115972371459682555458172607
38027220599454068056580585424289120195135808018911
81730326587260459146582170501178211539443530738873
14302158744574723126720989003647197879251062145393
95588392559171837068631580254328808020066587685766
69662773830196184153615022635702433077214838306566
23567471140858515082906309348557575678781969771386
29855400856080351233081625132866049622227385713306
31127091898628316188225410523421273390176131544427
99816633896226429074801093922236986757027387711579
70677640712258841717191063849895241625684383472606
20149439380372494396662960714003908659647930405116
02651805123832615900434097988283723560321632624283
34446560096922919662554056309033862127003563651054
04649951297636990696040006870385574603556592121620
99258124743473144505665600485083775011116518575504
29503334089296436203804383703448871964197169390338
82222311649271398236367949163006969009372079953751
07098286940416690731750748235166049907070875975855
90538707805013527141402204096237977709806659315029
20763830744177064647201419763109266501458979086625
85077086741145362187415208158427336595661969384775
54382333534286312679468035160229214715992269549801
33927963413978460874569988482814122929506131110327
19148428956747029719865805343612973616038745886410
92521169075346681306367382439294393181281090265267
55493725775342045165038426686900388140472152416300
47967055447875015902009620726602562852161582948148
30950992559580630418151671285466165141333105283072

From the PIN diode (digits):

2025-12-14T01:37:53.993638+00:00
52293269607998738149808838163717716673200868385103
12352365266414865191688770506908820208655277037986
18053633742029526996311696607138399902704328493178
54375697654402671683722829675320526259416458717139
25544129231860973769036076927589873771094811397685
42490609994455681105705984897446940759330590755996
06824302969280391959003476126852755601691101152637
73395339523925065037074477955403770703894327040231
11117311771315554647325835609734924273173703632498
97939349446540762155837204874364441881025951912612
32443468914566940664019911376943675549853922547262
71368137499832645658945716977884287691628423156088
30743815379613964008646270158692413489171043216820
25972184758726089583670085897728358952205042378881
54772740294242511681219330176588352697197030361535
82129719604917241949169192166623220410913150058592
58269452195432465797252129203168995289887660401703
31357826861589193548616688475723293834064743747961
69696732242151070873939084567894112095661993311353
81111509285799488831953408790840442234151208961275
64641504237640692655281159684431335238385732790227
62031821467755649367250605890222915858525532974280
04983298832368520867578936242588676815496562401201
88832259021448171933725973190752270046140883476759
66382377064371848472959938415687361943937130201840
40464666361933191479586351463301880544448418424359
84099337029178046884444231381856840433972747684456
66525964974859054340561038422748059271814013493832
64293296828118539850272841538263335072529272381040
89293727700718508053361764013609277968731484545279

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 2025