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-24T17:55:08.619745+00:00
b2e58142b8860d65ada826547cec9d262915044ffb58ff00f6edc878d4f35374
4fcb41b07316f7292d821fd82b3f9f4a63502b075f7d93fbc4a5c9cb408d6819
6eb7cc0991ca73d614b64b947c9ece39841ac755e24239b040c7bff81b3ca328
3fc1a6be796818ab2b09f10ca01dd23c6f9b5afeecdbd9bbd69156b5865e4b7c
ecc22f42beb5063062d9d7069245be4bedd45f20a24b503dbd127ff5ddc2570b
9093318b939a8d42a633a302a97538d6dd6a892e51e24f916ea5e15023d6983a
3927592772128aace19f92742c54486eeb409dbab86878a090c20b316513b416
5c2777b9a9fb87ee1cc63864e6f5cf865edc53ab939367e6bfabd6e6d0ea726e
a8352288e8ce3354875ba8adaa9e766bb2e7bfa767deba52b5a88bf79dafa9b5
8c7d431e2f0a65bba31d60c4da0d82d655e2b5a2f23a5b02521161d7422ca7cc
c282bcd39888c58418f7fa7df82f3158969eb66a9ff6275ad11cb01220476dd5
f25e179f77e72c5e09ba3169a1428ad9765d820eb5ee2a0459fb7d2de077fe0e
0b22e45382fa813bd24e127c1ab8d02e299c7877d07e2766cadcae281987c779
a41e62bc43509da9bfb00c1e1af9e20b7ec5b22818b65a408eebc72a0d03724c
13815ba367e07932df2e10a61be1f22a5f3368b42dd726e66cb6e7da0832f74e
e9258ccc0788982368073503ab4dfa7cad526969d024bd23c069ada41d7236a1
5a37d2475667a3891482f9e78586f45e65b41fa7f96e35bda38bcfe3cbd24cc2
55c473c079ce1a5687147774d0d09fce3cdbd7434c72f406f792fb3e563c7b62
950eb996bed644af40d8a2ae7f92b3bc01bfb3fa5367e648b97fbe8c62acf687
2e2aa03654974e3f45b235a9a00d75baa2db4a2efcd3fa77ee38b2f5de705650
867e869f00c06861fe0940b4595d9e7c9b57d1e66a7f9854ce119d89a1994d83
63448727715264caadcaff150ff32e9cb7147fe1b32ef483c7852288df22568c
56342e1559327dec123430d6278b7d5a3b5f30c60b61cd7208ace21c3bbc3807
27a4349bd590c5ddb459cdee3bd39ce7cc4a5fb26a906dfe71cf752ed654ab6c
a313e5433d599e7fe74f3002e88507d3c82fdddc3e71f8a1ebca56dd900d988b
f068a70abef19b11be74b2c17fa3de3d22e0b26efdd349f40a3aa9181d123c2d
ee39d07e0d19a695e76fcf7fa48b38b49902811e23b008cd2850c5b5435b0ff0
64cae39591052f47006552e859edfa08224a14378f0b2a2000a287e520b5d14b
c3f41163b2f801d640a41b4bd28da1b79acff27e70ca1081aba34dc5f113f90f
6740ee80c7c2cf9b0938afa85495ae0a7e0d854a0ae5c9b9aecd269c54c4c36e
c452d3190f487d5fe972f66bcbe167c94e404cec797a76e974e7d96e6c5c7498
ab5e67edfb4096d6f12d4af499d45b31420ef109b0e30d0ec9ebf38c76493527

From the PIN diode (hex format):

2026-05-24T17:51:11.419215+00:00
3d818ee82e1fd8de7123d13763ef9710bc7cd748be19f8d4653145cccd537cd1
185fe3ce5949afdc4f89dd457ad61a4f228337dd9924f299135466d40929b462
0dec8f4102949d47b80742be261e5a8f7151dcee32bd0b134226cfbeab609ff8
b6417aef95827f6d8f342e135666e55ab4b7ae65e6422eba4df64044f6a77caa
9e9d64d81da0426bd65d9647632cfb5e0d72a6b62093720926203b4b2c3c6d47
5b2af8c95db8756e1931f3e9b9fd2743eb79963ac8accd23d6db042c04025795
c7fb3fa109aaa95586a89ed8248aef0f15cf5ac364347f82df0f0f2f9691148c
dcfa5d6ad623f3d8139ba89769714fc1596f032173888e9721ec810e0426922f
b31dcfb51b699a6da1a6a1f599cdac9935ee6c5dd759ef3a5df7f3349d2aad6c
6efa8d3136a2b3aeb803179a749bf6d0b08999c943822bb701181c8e47e444b9
11c7b7dcd5c1eee29392ed20d7eeb290532e336dddae34a53b7241707551742e
9b1ce59c3df5fdc15c0f3ca81859fb3dac2284ba9fe77e9baafa49decad0cfe5
d7aa3e1b9c96167762ea899232863c20d917972bade0c83596d4d2039bcc6021
5e3da9520f0fd12c9199be9e9db36ec6b03e9b4a0d35eb0f151109248c95ac0a
671c9b1726cb8d8382440928b5963d3ae61a69f370f85a54cf44bc66d22ec8c9
9b5938038528ecaf3b1990ec8f71c586774796e0aa073e5b3759c81067ca4f25
12208c97ef39f4a5fd20b7d3fb7155f265c729ee694f6f20f98c85444d0fe440
209ff00aa4b2dd0e8e56100576d7c2ba0845acad3bc01a2836ed2769f1bbf328
8eeea1b8478da981719ca2716bd8d6e29f731560acf3160ce05fffd135193b42
a88a7b9514cdbc40c3912eff3cdfdd76a697ec03153f719edeeee373593a35b7
6642bc0ab3bbd903e89da91b0dcc61f4bc8a535f58468fada64f8c5e30470721
fc1b36d0688ad0a47181fb2310afd042a75b4b500fbba552a1c361fa6ce0ef93
7be1c81eb0dbda8b8ddcd2df2d976cea7babb714790ba4e717a14c4b94b7f903
fada678d91162a26675ca2d03910942e82c8709aa270b66b388013c2d403afb1
95f64dbee5ea4b648f4497941ed2be91cc628513023179d0a8bd64088361dc53
b6971ea2a19611f2f3d1a6d5ed4fde54a65122d9bf8f2df770b13d1a49775db3
3aaf66e48ba2274e58a3da3efd8b24d3b886a76130d8489ee12287a23e98f0fb
7add39561dfd2d36085bf540d7b3f87bf2931f09962c847c9b4e615210de91fe
78ef8fee013aa221af657f9f1392159d0a05c3232d6eb9b018292baa046e71f4
f4ed0ec55c48ae05f62928b102cd846391b10b1cd143637835c9467f6b4c0587
4bbc9e50c930924787dbb48599daaac8436ce1e03eaaa55db0f05f8a323d5b55
c99f19b26715c1b69cbf9782f5abdac5a04951e6a31a50fd09709cd2eb1c150d

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-24T17:55:08.619745+00:00
78296684341301736838842457384121047988002083167965
76152241453031436359749980430795254796656441042510
83094515208275482458573226998566577664999127606340
63936690210424714309126029601155908745868134947524
94476690810648980646699075953262758061891827948711
44474939475441666651630269175606374681794510658035
52585739893914183872594616448472106457868404206044
94114901198022923919856935289856003494837147470391
71141068533436518435916873705818077891670386828168
39577569814025673047100187632996961330858162589102
82179766446794308852369732242547498850588206593990
28761832710994235919449409864905616638189330148142
04892545191411348330295978182426844641562019263902
74402535992164309888678057699176123026112697784024
82906442994213031476192991630321504616662742955104
80453808820850783740073652350407530371772473820505
36893592057364291454619055718603633720303334940180
31671053896339769485961592212686352019165960677614
06466286602398491485509068756462742746798801917983
03728527904098723546426054845178636978536960131786
62744619567812868034263459009204970964808993582455
87062752841757376153773199683539138200732115465683
20277946319933343634864086524621895025185248393925
90599548981197140872285988560739645255449780895956
74957806440913174684710863196761895827794802330747
62136186441352390467109055179016789327636134781073
10586924291860455726132566491127643956805302293035
76084080978167911500494505477100018289083474205543
11423200623532817595179978016464277541618354261216
29716377971915036428999455095675688449741026133374

From the PIN diode (digits):

2026-05-24T17:51:11.419215+00:00
61294246311335559951168824729025014969832424958973
75793769222679343155533653198402094180981343650248
57718407669038309043138150891119663890719659826522
49302709435246198602908083740166468677646867247058
57002960660793507199449413146682324714093832597544
60097191429384171025498539672150587235044404028749
99636109706985346858363815219095005227301515475045
20409306351955685105137993891103331536425133291404
38464779298127055409616661537253530893895893525742
73081041495462797484032354165576375367304383012428
42716885179983934746327844834651097452655914651217
81164655285661939215606824896172343286592655707370
62275650221998374650346032235143735350035596339461
69821515444553905857791098766255741353152117093640
49721003285523384131306809408150615826051290846888
02465589560333407559254443139734197150700762915589
16037937183240515765328313850199410579113240336877
15643259106478144286160518948608697273599226405439
05874042618471416929135662130759152196722212955325
59666838234920886495454660186651032163135815895853
83026688107987035769271397883883958870437366794094
48710733275404386413293516756667917580158765826195
97084723307639414551082371832021116423617675488303
03414522423803926257164846301254621282075628199403
75774977907500436851483090459833190249216889000831
97838251306261501766798466813491434512776126731993
79587502396239788863623936843467974872583435626252
22578629455408916479234731095044322455789782164520
43015862337501275919462157100595354510857624414370
04101314979272740541407702329945771128679920537027

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