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-08-19T12:50:09.615416+00:00
56d2e1474154c7235c0bd89dd6e4e7f7f3d8a452b7e5969a0c762a7bfe86d3e4
470c8c89a1a0095538e375d6db2bcd2fdf24960f0d5ca34f6c25bfe2e4fdb695
c7dcaa96f6f6dece355491ec67daa46e311ebe6dcbe2bbd15a568d4c378c9a4a
54029aa5f2eeea59f57586bd7cdc6082a814b2d027107210ef86d2e329286a75
dd6f78bac3c8d3f57daca677f3fdaab461593ecedb6925659fd86da3a0a006b1
5256e0949af9544700fa356e76e8e5ad008fdb3253d8eab0972257b2b53a1288
0211732f41a758332e162c69778dd185d1a8c0cfe1cbcfee6ab69130ef79c3f1
bd4577dd522ad265d1afa8dce40679c825b746e35021caa569f308cb01c51b1b
107ebe066e2f495fce2f5af2572cc56c9e6cfd1a1f460fdc6cf3ed31fb20475c
3a3ddb18766aa6407750c93e7379397c701591f4360c2304acef08821ab25288
891e6cc7482b140cefcb24ef935aad78e0a4ecbbc841ba3a4ed8d1a99c0e8bc0
b13e0668deb048f39b2765fa2c29a170214127448a0175e272780bb09795c1d6
d2efd5a49acc2c40302295493b6446197c3f797271acd383c0111b3d9b281148
5f1b772b5c5b1801d4fc2ecc11952e786ea4fd33b7b2f8522871ffb4d50d1c80
eae82b60fb2f80fdbfde4b1e39e19cad1c5e54b7912b2f35fecf2083a3ae5a0c
aa85bdcc3859a22448150c739b43b15c645c71876578b0576f014003939e13c6
47543d97809628b08c35ac57aab91f3ce7951e302ff8e26d236fc332767314dc
68410f522bd58b27be189437f7f2db608edcbfd2fbdb5c2ca7224a5800059da5
092b20a5e8a5d153d830d17fa4ee164f692a09fa7a25ccaa14d84a02ffa84a0f
adcf67afd0c8421b497bd8e923cb6158dca1f34485deb398db2138bd0cb4bf74
099f429b3ae2e58510d9d54535eeb574eaed5912a3eb5564fcb0a35b75b6244e
338e76474d824d00cc7dd50b26845f32dde32813e7a64332a4e726ebb590769e
342e73546094a01c4c709f5e3388424e519f22965accc5d2a0d051891bb8144c
28afa76cc5c2110613309d0854ed50f938d7aa71bc4beeb3a6d1108e5a756a99
f1c6b99edbe332c8f0287adbe565f965bba8bde22fe5f5505f599bef46961d3b
1a0e42cf8ddfc51f4de2dfb9f372d8aa59779e9df9e100894358444a39ad2e04
d6945d2d4a9e0377c1a7a0f9ff01ce26b1a40873c511ad3bdca15bf9f60e1364
5ea122dec70cddc07439ee9a081838a6d537c4603959996ae6418177870398d4
4f8f5c8c86a2239326d37b08fa976721c493931aa66164cba3280ebfdc87531a
6409ed5f128cd9c97d59bb34770a53cd197fdef1644279fcf650b08e1a9526fc
9343a900284da640360d4dc5f4a6764f156f09d914775b18e710ebcfe6e38e91
a357ba6d0a82b7a185dfed50de54d5c6db5b7c25770ed98a9bb5af58a680c41d

From the PIN diode (hex format):

2026-08-19T12:42:09.615408+00:00
59e4d9d0ca0fb9fd7bbd2d59763d8665363b69692862d4d7f3c6880b7411658c
a35b783c7afa0ada260c0159e3e0d655c7b0a7fef25b71ac5ceb60f8290db9ff
d152cc4ab16b44c67be005d5b9b61da018d9acb3d5404e82159af0898cf6c3b4
9c5c6328b64b1b01ce85cbf06100add0d3a6e0ef5362c331559241ee9e462cc8
762b2a8d581c067486493e1d37fb915c7455bba1ce88f40a7b9df7591f2f23f4
036ed5b14a29b6d19650b2dc6165e15a0aeb913eca6ec62ad626b445f72ddfc0
aa45d0d8c11d945160ec9ee25d3536ec3a12a726ee798269dcb3b3fda0c2cd72
43e9957cfb5562852bb35766d17b7cc9528e26fd22a8f0880144c663061207c1
e9a1a454e34c15ecd989af22d77ff54ea055360b701cd8a62397aa995800f5e0
33e632b9ed05ac2940f3bbbaba773f8bf25c3f94f0c51cb2df650dee491eb424
081efd2600870af222fd9224dfc6d19cd8d65d9d13c76408c647cc8421943ef6
f0fe7bc355c1c3834996245c1b66b4cac676131475b8bb5841411fca426c77d7
82ad1faca6fa4307cc644fc895909ca0cc136a59566790c7e8fb2f7bff1d5a0b
915108f0932bd3ceab0381872be2c26d9d4225a44a2e874b085a95609534e205
f1441ff1f75abec790705833124e849ae58044e3ceddb53d6224d0ed1aa6a602
fafc5cd4d472f39c615fddffcbf86dc3e16c0cf18d0874f62cb1b640f03fdb4f
d3fa45b2b0ff6e1863c7e98d0377dd7638670d20bc643eede401cc2db703a4a6
89cf8f5462a400d48139b3dbb9c36ad7a79dd9a59820d74e5ea3780b9b740eca
fa25140f0870a46fd35d540321ded5b5282d5ff89c182891ea0c2c645e194265
cd95cc5c3ecd7f9b33ad2d8a1fef6a556a8cd6bc6cb7b7ac1c6498014816ca54
684b5bb1bef43673de41aa578fdf815c3230cfca687fad04a04dfba1d2a242c9
1fa7fdaec596b95f2de104223a1b3b2eafe385cb16c1262bd95a2c5a1ad18573
df07cc4bcc861540de25f65b063e42212098d52808e5bcce52835516b2f54aa0
0fe530513b2937549859d21d1df19c2136865152106ccaa14bb6d54cb5c40cb1
de6f523e5e4682e70210fadcd1e9f5a73b9cd3f01ac792fca189824854756fe8
c89b39954ff77341f0dcd0e484f755499be4a3e447ed7bed14ef69e4383f30c3
66916b542b02c7b0f2adf97eae246e86dfe194a8981565edbbfd2565157acf5a
612acf9cf732f76420fe030fd1a5f36a44c5497ae11edc4fbcce23f2b89786e1
9c76e6eefe73cf98be707fbca1c4ff943b49d55c66fa535c3400ce788e362054
8c007640dd70e392a2f3d8a1acf9ca5dfec0dacb1c9626703cb57148492d2944
f0aa2be43fad8087a8408c12b1f15d082970704dc3c2c000da9a543ee830cbbf
20a951709772e48abcaed90f492f2b51a73adf44705d3c5bbf2098282c950d19

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-08-19T12:50:09.615416+00:00
86716584993592115764828350541218422334711240376160
09855617434736501513926379083791824999705053844503
64104930900987908641765540547484025465891734892496
30682078391614163441400617112086952572661970809789
62053701590963606006778286485484710053101873004350
83765134877881581836021715476567885146224405194133
68920682454821958969198242017568062137837080336505
08019727271626900610477395479087449708580826317015
08493271925861241806666419806215215724122145541235
04720830267882363730089972432012364790732064876586
58786956143992776206047672553901444161123365396838
01171420117651499364544464483449735900702524632114
13723192172761554017729527194392912401461749462010
64518378824013801328284396472891753057567328948483
45434753323163749012703389568962367221121555677792
00921335012076871101640347581998718461512850407640
53728770853160493048470935119550181520046515824339
39902448559642919244673474880005576509433265658348
27642279054209223770207402687415730375662773233597
88616833795233568912809116095966555833166953811689
18638500766391178236785142187177307700251138329550
40196667506438814418585246158496486028761259945136
66788159345090976081372784207640756708979417061948
57088480567013887579661642901706539885585040220101
87688947809589557050295926146641973177851470891958
57003767886874577346044893457458031993676001387764
08159717735961911419009461349912921657540824566655
96965789530665291935035279439240346235473823085103
33964747266697006340149135832600099518402589875219
10832527006621807642264938476769004077666454137797

From the PIN diode (digits):

2026-08-19T12:42:09.615408+00:00
89158523894589186134015459050540989836111617014063
91206022103812018985997667911372929641138582747707
68982305858229602472796478302154374095805692994082
75270133970073668398954985466558704418434241882806
16347362295545921685876136102357893147350310777441
82508078970190104562109842388069459270699329488196
58935354581867382130057979609414674924859833437987
02232482423834683601689899061807936164847621377534
27786085541112286635517053880051508505724164878686
19633992634897287801137330803608303800351034463698
56935719990008987132334862239585939531735036922702
80981819201784878865653166081930733172666707007949
44566019068986034499472329901145810847437103293543
94095766376474463575089049964952056831909099441288
51187832542868816198362666660292145697950995081241
08164477826463796978761024999941031918560313328800
62014583036466374384986400295779859506675765523278
94632011551614372015081264119384033381404595562440
45124400942566014992622755517345383106850640880883
83722800520172228404759177905415657087432992504804
27730460776162663167749750859545043458275946753322
93384390449026331507753421643791066266333252400888
82318522787460154881594155845289292956335434818216
08617582768196127711826294703002166759562699466137
30728417115557497915653285735563712320055663489502
45078443029976732674361034486852210187370121229097
42565000320315650668977322307988358451345618155290
12278861964859739202839252002042543284400018641246
62617293922850381260811372734541687043637328356864
40187793084112127795949200548462489132698112511438

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