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-11-12T13:16:26.389312+00:00
bbc2cd57ac92697abea165a4c171e0c633b74f5db7004c91ca777294f6d33547
5b2d647c02a50d6228432d7b4ba9f727528b4f7c2893a3e3988a8815dbcdda71
0c883e201ae91a60e1703e0c451f82ee58ea37a06f73a907668d77437f99d1fe
256d07888bf784338fbe7661d0a229fc5a3bcf9a48618e032b8fbbf26bb82a61
a90478ecbf66643d2bc7559962bd60c3f4d3627f47252b87414a1d9ade37e4c4
fac95d5d1f0966abcd7500436ccb4d3c27ab6d59ffb192e05275d95a96b1fc58
b2d52f2f90543003e50627a29086cf8ba7bf4827d270ae936827c5ad9c347a8c
bce43796fbd59c8e0e486a0e80dc6a6781b820085fa0441ee7c89c30e278b555
63fc2abeb73cd307a5958574da2b543b8a3eaf652ed6e7c8913ef4f444f059af
6fc8f3c2fb6f070012701d6ef97e04ef0f72edd2f0917dd3021dc41e37f318bc
4d42ae49cba5ba6dbd2552beb444c89762bfc57d80ba457796ab62e17c996582
bbc4cde9778c12c2f8e2b5084681149623e85c3908a6b76a39fa7a462f4b6b3f
95e87b34684fe20bc2de3eaa5bfe3bed8739c80cf730041125aefd5bc30632eb
87ffda620142dbb88f412610e677cbd1b24e30f44ffe6491a485fe88b5e96453
b7ebcc50073bb48ecc896d99e038154f20a26d355bb4ef6d1e4a3af28f30d61d
42d27726c02d85ac9c5e0dcf6b4655b6320830241fd8efc0d632301d7d5c1f8f
f0643e720758541b1c412b49893023d311b89582bcaeae5b6eca42f5ea730ab6
8ae65741f25f2bdfb799e12f759c316ea52c21ec98f5097c7fff3c062d2c3c7f
d1e99c26a0c4a6ba5f3d1b2b54d891cd3dad2a9848f3a844fb20ea85460eda0f
9ce7db5948c12a353f8d0bcc58601c6b23d41a44a887488e7456af424f282222
b067f5353fbb714f5afd66e06e24bdb6a065dc16d0a1c6540c96623dc2bb9966
165ab14a7e08c17fe2738398e2c395959955b2e183527802a724a2c8f0c77268
453d0fe0050f3e35b2650b71a7168e8bb48bc4465181e8b63467893cfd8f9306
24ead8d9dcefe794337b64d5474552cd7878a56be0ad38396500a34f29ff10bb
ce79ffd66d680a6ff46e4b2090050e5c7e690300ed869b30a993dbf3c0ef6e46
40414c73ee597dd0bb3ede0d0092d1040c73d3d917b9ab75f2f186e720b20905
a00ce9ce605999974ccb98d6b278c4617614d9d1107501e3d70b31709be2a40a
13425675c4fe6e378851a7b72ed72f29c42a70435b7694d5aaa593c96f034b09
bf962e97d6009f0cd75e06349298e91900e535e9844d8a02049d8e18680f4bc7
ebcfdc941401ef97bbd3bc7dcc8af0a7ea7e827c4ac963a631f9c704b6f8fbfc
025e5650bd670706cc088cea0c871e3c48259e72f7955e095108d10195f7cf13
bbd147df22ddaa9b2726980f2c21692f4b20786d78856630af0e90efb0c0fc91

From the PIN diode (hex format):

2026-11-12T13:07:02.786679+00:00
705946196b1e12fdcd8e5d5033cf69ca471772001ad7be35d1c94450e0422629
e5a3f1591d71ae120ff76c1395190fbbc21e4fef5931acf6166812b70fb41c54
91cb8f029e76809a22f22d65abab1e4949109e52db2ecc61ab70b2dad914a739
bb0ff5fe1ce6cafaf590e0a88f9afb1bddf89a8db469dbac69ecef0a7eec3679
8623ce31b0d8a23ebd784e762d36b577aea2d7bbde85c5eb47790a30fccb1559
82e47f4485fc63a621e4c204f3ec25e62498f6b9bcefb79181c36fd2c4474cfe
ef7e594dc6cabad9304bd48b7618aef6c85fd71eaa08a1a8bb46032bc96d1cdd
c28148ae442fa9f09e371d36cfcc69875defabc9f0e779447d7dc3f7667f96a3
d0b6bd3c8e781ae0a062da348760ea656b9b3ec34862a804b6867f68dcef6ab6
b1b36928f12c13ec42e7cdced29700523228333c82065ede2db8fde1c7dc770c
ea31cd0bab477417935c48f5fe1a95af504ade0f6bba7f2211f70b696f1a8b28
4d8a03432bb9d55d80e868841564f66be1c30f6706c0326a3a43aa8a17708e15
bb003eeebd014fc4ff9a18b716ae69637d9cb371a409c9a93a25584cf76a1c6d
67df815ac9c192748279fe62123b2b2c4222a1af75d81e7667b2c198fa578c49
3ab10db43035a0150a8e29eec82f5a17f302dda5d865126b1b90bf21a8278dcd
bccffdcf71f7dce06d73389179f752ecce0b4a0152daf59c38319d2551a472cb
b90cf00b49e184299b79ff1be43daf559063734e05abd84617000c4b81e62346
afed5520b5f405bf9beb92c633da1bb6a89a7935a72ac4292694b31a9405ab20
5cbb7d83909fe2bdb3a9170f05228f6094b3dcb20fb3a18d3d922a37e2042f47
088e0a5e91912851b4a03188c95872457d91b1e4e4ebebfd3952021f5eabe691
d190e8e1de1eb873a9c2ee0354ba97e12dd664639a26bbb610800a5d71590662
805d381ffd52c2386a566b7449870857ec42bdf166f97feda4ade00dc9a482d2
1d7ad1bb1333a86631c3196e9694fc9b94f8399e306d545d19c12c8a044a9575
4b70d528fd14d7354195c021a7a4459cb46327baf56f07b953c59a14280b95dc
b4dd806e78037b292d3d510102a1d464b17ccede8b75c1955f275c08b1300edc
812f6baedae6462e5b1ee8254d1e44f293ee53659a4a9c31863dc3b890b951ed
0adb67e1df9e13a14920ccb4f5c6717058e8471e2351dcedca77bdc1c9aa718a
13fec797a456956fb558aadbbdd2951145fec3c516228ceed405d5e710f37fc5
e4dc4007dbad060a32259fea5dd3d7d16b87a1acd99cc2d115d73508024eb676
35db630d51676bb0d098e8b67f10a3319e995ac4e30b4f6e90dfda8e72046cc4
4ac7f75b5788b8abb323213cf4a9c9e576150633e561e7303f9b8178968034f1
d97128ed3c9e833fb4c33e85a691b9413212f8bd9565ab9c6534dccbcbd2b36a

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-11-12T13:16:26.389312+00:00
87948772460522906101649313985183799383007645191448
53719145002402651398406745237569398239792440476352
38362113123662322626961262126931308855601115690702
41196727533709073639325143901897624190595472974203
43438707844297690420910200614399855398899695982771
37433565742954559693933109027117006708776039710989
77468217905077887847474484480306396244343967917239
12744704399773565222408855505642147206142806032984
32089560683056482081859942908360076549331643845938
62750146456268897511941107001812291026041514452502
29963055248877667473658609893782908068519891972528
86691950719824530130879619401894810870292050359257
08668306572270477507634923520479119462709159355712
48041737749195065035980166844365381619787848790045
64333681008383800759804237095356217932620953918009
30745843482966193892453372569413077085825008483631
92504829259231430062140788842728654373374835178449
30887474911066151082388765954383534717564910654433
52092427600645446027563860966686956127438445617342
52726868323370141556897293425363411188962807352668
68357242168675667940343476035363871379900210368982
60012261988412509861948753022290777426089327153152
95494953857831822002673662991404696115051562537801
11136722423980399670812982520337604347063648512300
71698220206507735657010063794116872109041011107532
44051492260503003455486947921070646576158925876213
00460412152385711734327809056012968953517652782096
97182016170111491255641019668617961055368167834647
41964212679118487065471103750991504651005912940652
46522500533277380204574224041575994820015187882538

From the PIN diode (digits):

2026-11-12T13:07:02.786679+00:00
12897025073018429380510571231400269053688066384163
89291374181508194925158794307989497222041883158028
84454302581828543445017171307373165882469771127820
67578715284468435427544180057205102654213435497662
62892078184554811974628733977121104821893027683399
66339404373652858883452995119671762689779886487539
18247495307008616887700343092894297274684769585529
54053593712168252595022750638289604220266098523596
01075562957298680482342704068277790540441966510082
50405160300694458499191249117171162347927226497580
74150786273417110511263940773803674385932804322100
07951503069250065867703823124221870062890179965424
83227405992556791364096958378876062809032990934616
30219818594344663461751730180378935287407358771380
48536021104241479023026501180727449133683941881309
15564521821174018256564957378164148512117332415521
27617585449915780571702300127529357075853281059155
46985127826854215367429641384879264805713292872531
44598979692315053443964879781579614161464255044771
08421094454540818060493688146925457757820231947145
44308415699403848651450099543887821628109313890698
28935631829456068607167335088766890227647313643029
22871951680249952510504855485758480984932593443804
74491775124020536549923367646956809939861107858397
54204011498028102003234145618101026100772439179349
95399208774814294707747046913037773068478301547456
49346195844485811003581961733280981312887130358119
89937013381999516486491181887089491769959722344005
16279764077306105037599307356172569421530802788218
53991381030776528227166349585390961179104442140408

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