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

2026-01-17T10:34:28.560856+00:00
27f8efb0bb21655ce75f180d89a4d5293d2a300a366f053c602a3c82c25bab7d
3d5fbea352e8edccadcf9a5d27c26369bae2526aa58803a7fe0eff42bfc211f8
719257eb489d7426f4529fa6c6b78ce4cdc65428a9820535ae62f79f10462b6f
18b4f6d941cfcc7952d26318f96e52ba7a67160b7e7e6b6f5a194e0ab1d3f066
3731273bb6f0ea1e14e1622f39ac56e5fb5469c4e9f1a17d6e3a8f8013e3ffdf
51cbdfdcfaf4290b6557462a272cc8379dded72c79ae5c05ab02dafd35ef9c54
56da1b08e2356a676c612451fb49667a8c25bd127cba0d0967b279e6c2a740d4
40e38443ef09fe47026515b7895abbfa6e8ef9e1ba2e64f7cb86b579a55b1d83
ccb0c77b7513f7351c9fd056fd2c179305a4fd7c2d3b02cc4089475df138b72a
d0ddfebdbdebe5156ad93408a9be26f480729029f5f68804831a185c1fe28c85
1b26633a67e7b9208484c38ef61c64821fc086bbaa8407bf0c4255ebdee896ed
6c4882ad16b8067fb2c2d2050510f4938a803fc88e9645592a0048f70e71a750
98c8cfdd078c6d1c232b9ffa42ff8f6d455d46a84c0be798e0edca6d37c15592
2fb6ae415acb8ad9937df86891b4d194c1d79897c361f48a12c637f5ed7af4f5
1d83bebdadafaf664207661bf10e84d4abb21c0cb9b37848d3b23e5235fef06c
e1970e3869085bda817480f1745f83b7925fba598bf5f964439583552dc04cd2
4b28b95ee106e8b7226b03b70fd55dfdd49f8b13a6e4c6420298d7d98e3c8c8c
61b9dd67a4ba21322f988593a9fed17ee6a4c70669019d340dafe62d4406e5f6
e6adc4fc7230ded8e687b6585afa385c6942b82e7e9f6d41189b3b7d9f10af3d
6bae9b290c6e8d958240f6eb9408ce76065946f65eb3019892e9f68a6fc9b6c7
312346552dd36e4e4cd982d020817f05cf1db0c97e14369c0a717e9d444a8c12
49c74f7e3222a736d993d556b99f7264d118329f5668fd606758769ab23df095
8aa34e8f459aa59757e9a131202d115a8d0bfd4e0d1eab5e0a48a7d0dfaec890
9d18060ff33a8ca27ff31fba7c2f23d08e808c9f89cff613618238d40b2f2bdd
6392ab495cf14747b5cdd5750bfbb6eaa4b20fe6a904b6aecad539be221b2bc4
e54fae9810b7b3e99b6ffe791ca1aa8c79cc629d86e30dbf2f79e0f2ebecc1c2
c60a9a338d19bcad8cc25de1c8b13e0cb4a632aeffcc45d76947bbe1546f8eb9
91285ad29df7e936c1c622008484132fae15975d536aaaa708f7ab7d98fa5494
849f706267e9391ba631705cc1a18aaf70dc12a23fe3a058cc9c095ede414196
21900546beb7c95f2c285610f03e1083e3bc985a44e74bcc316d1f0eb1ee4d19
a69e7360352f8602453c0114239bc2bb3427e3083b4b683c637ec87938c102f4
c320f3502f7005ca52d0330d127aa035c6831847b043b83310962f41f1f253c8

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

2026-01-17T10:34:28.560856+00:00
39768733019295241337644161424810541105609642603094
91712561959063827354933994990586820665360367146691
94171346877257163882596698834098844069300553749859
16704311248065218299241082862203221126260711902578
10770255493959823020984757728684059661251058432819
81411101877042394455574421749205710253568486270853
06030897368173022240378918248613090378219467646432
67097102012183379087104286460034812165912931769923
17195328598644234705642445590264377193568342898921
06520869903828144441360431262492314033273899580385
32323295422800303192348770320791126685500872307322
84062778940505164738286342506989420072141367805207
40092835435966430969937068761152095593854647827465
90384725044580489352519597381898552229319089737575
02660702271432717828128579207278628253085114560508
91291628169531834695868939006749318545927675408594
06833407038315935939196698660252426040409785036486
33504752334769266499060501575213754568067396144835
82889056920566844626590965245559255916756107745541
12104149306448081806897094790152463811829949357085
45107876303229270529762620545610132657687440187399
79265034675447868559140024505986049603881854786149
38637843695465518761493245179041117813307194107267
74445724061558406227318624473542284059371997305611
47439946717392717181171182647815690482745790342743
96797452168379551121286170402198573413914721939498
10545141258873409493776212806650746905718784114285
45409057549398340032321947742151938306706708712552
84483259129803572766491292936138751218626360885609
94656550334405709083954440861662163188529068754909

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