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-02-27T23:15:04.541964+00:00
299531d337cce75f6578d599adc04e2758c345f7a91efe36a4750f47290f302a
a268f0fb73f0c61184c8314ca73b49feb8a9a52772d93cb07fba9cead1157015
afe700a49741fbd8fa0d158d4ea3172b59300e803fe1d66c8ee0d2152f76cb8a
a2289585fab7537b3f98e8b5cf416315536fc59d3bc24e9289b16ff3e18dab82
65dea737f0907c9b1e59781a5915f32a781ee2e14ee1174c0042259da2afdc45
eda64684a8d94198c65bfc9492630945b33daf26669149805d6b89be0093f31a
b38101635931ce8ca5f80b3df6ace00054ea3a2a325d4949b1d912046926a935
aad9b0c4401bceabca566cb2c7e7cf8ac679457f4eb557f2e2e40bd69f49d16b
e0ee85ef7e8049e9a4b01113f05c97ad28e0e2c6868e81a5eaada937a8166110
1bc4104cf568edd1ef3aa17c14cf0e069667d4f96e98ec6f4f8d7e05884fc404
14a3b499ac89dcc73d03a07fe2457ba02af29afc2d2942b3d91ec124d1870306
7556ae4739bd66e7e5bb5caaa581b728fc08f05f558919d5ab4ecc3714d22010
d478ea832234cda6902efed2c55f013d581b9edc35029f336b1cecfb778b9b3e
9734baf5845e6cfa95af7d9fe1ef5c9abc509c986f57ca8bd500a25854a1db40
b086e850572d3a2e5a04d3e88deb75f1d31a68b8f781958c6e6231ecab8e67b0
49321ef9a3ce264c3850f81caad0d74efd8fd418189291e8c88665231e835412
2a6e0993b4b954fb66cb87d57158bdc97fc7ec16f3a79f4743e94032a2bf2f84
b7bb404228727ba17120965af66f70f43130467843b78da919307a2403eb235c
bcdec8dcab790b2736a1efdf2c7cb2d0567fae4c68dbaa9e2a0543b9538f76b2
2fd5dfa6d8d2fae8e25b383f97106b002fd1fa6d35537f0f1388f96f25f3de7d
0491ef6da69662caa426212f40379c06a9e6df7f9c57c110beb38f3cf1433a56
b27650ee9c06701af771964054a3121767baff2ac2779d690fde4cf087d99a90
9196c57d96a5ade60204bfea0460088bc766db46da9bd9ccb0fb594be3d71286
3418cd25c0194b26adfe43e1d8c4617aecdeca129f11956f74e3a92b3e7e6fa3
9f49b883b1829caf8f324cc4cb27a9521d327fc2d66c3eaa8f86734a8ab43d5d
3140af3eddda6c1d023bca998483f5ad8007b636fc3813e99bc25fbf45c185cf
9ca8ab9b30b3904e98f6d648f8e9a0d448060be49a78e24bf33d34602c5f05b8
20783b2dcb3486025d1d50d0b285d3903fa1f55a71cf68682c31ed42f0117ac6
9fe2030b27710365d0f555516f6bd4909a5fc1842727e01616d5d57fe90f02d8
176b717083cc4f693f008f2630cee5229c466f9a32fd0914bf4b2ff5424fee7a
733eb8f81b9069ff457b63affd49a14f9284c274bc0e300d24e0ac412054049f
214b975897318e9639adfeb0febb2ebb540e42b3c0ef3de7a471493774795cbd

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-02-27T23:15:04.541964+00:00
41494955950120537392783988956969305464171571411548
42620415981732497667597384696539146076278656211221
75006451651321417863234389481428630842214718386240
49338383236352816599218311975759947846377711417130
01675544245530892026892142203078237600663757627569
66703268655298914846990969796175380245732893073790
00472679290199894940651161720084584250937373771804
05386953707696642771860878993898216927788187115973
07332628736476171992517340983442296573695568229716
27961676045861242014065003105211794126053679960420
63805372379961036027692360425445416679309336350306
17867471578902879270652983400895853725717855203216
20313452664446979501618827585302595107281939556251
52863294084975255992548880565211873900628884616476
34808745584690044117260484294940109849714203767350
30633876568028707843242446453401353031841842100947
80858402351388892799226759716764506291473283876466
40142361133250901112494870206783416925482236033592
88712111395461442478862774760470584205678583431878
47669156635116070047095383271519361137250445096650
98643833476455560669275687931690794360675886781880
56061226135064846318230386429419570515763554444550
97255065730204910496083999027055768975183452243792
25753873679697221859174911166943622611635973843177
30567543507696396982295027940862704334157438806193
49647562082902595332317328078254561955949591699333
56687155487944785272607206115420756152964495058432
20594552340293298078334463619013040444496617229859
03113913030185811107445495933239392222271502230713
12317905630043384834567011545009209175476679221562

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