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-27T02:42:39.349292+00:00
7b1529d7cf5b1602e54eb5a5f21c2040a7c55bcc2c5a5c1b9ef86afa4eb4aa61
c250646dc94c223594780722ec538fe4e915ab81219a8944d8c89cf7faf0bff1
19519d13daabfe4be7fb269af9b88b8b4f7823bce57ad4f174b1296186028ca1
6356bcee9f7797c07ae6bbac02ef20ce0cae0129f8bbfc5c584e142f2793aebf
559d231b1977d9500fa2452774482dbdb2dada3c913be0a52e41a04b186ae362
5458d423b708a97c0d44065376a7606467714aafddaa40d38ec0052ea88458ad
2b7953f96c32317f34ead6385e0e4c082c72668042ad3fca5726e9f210ad21fd
041c2b786389422e45a7496e3167c8f483293e192ea1bfac6eee7772d6f774e2
7721880aa8d68f6c2079d12a7371336b929752368441dbeebe7b6d05caa54971
a80c2eb3a8053b0436ebaf100f5779442c1a6a325e4c44b17936becbf3eabc71
22f9ba5ac634aeaf220f53975634f4deefdde277ae3769c851440f53b528b52a
90652d82da9cff161a844d698700f1bc8078839b787e2fe815741b5c4e494e22
c6611f9b569424c2c776fa3923317f1beb50584ad6451b3a11ef405a83efad02
1f3219280ccb860c3e262d5f902a08e2a57ce3cf2bbd5a3c78d961f6920ae461
f5680a57baca5370733255434be59689a3aa38401d5b46ea6a2c42d93dc0592e
4387712c67317f0f448486451206cfa4e69f6360ac7ac69cd7c3c2cac50edf5c
184a6bc587867cb84192e437ff6ed9a5a6e837a8518f7a12107957bae60efd76
3e0a41074b9b0e55d7448681a58f09b7cc7afd5fb36c32653172ce676e1a92b4
a70434bba0789ab8cb78d6372707c84c84ce42e77871fce850438d6b4da54966
1fc9689dd73b696c9385e41d6633af3aa85abdfdbc748128a1ecde576931b3e5
6bd430b186dcdfcbfbf741579a3181f6607e3baebdd869148d1779ecde9bbf00
ce985287a0242fd005f01ebe9fdc152794a0b64e7581daaecdd214d20b10182d
2f8737db379462b33ebfbf77bafd9b51154ed73dfc0ca508c2e5cad75bbee396
9e09ed89f0ad371c54bfcf5f7beb7a9f2e81ee68ce4de29c51503d2902d89a9b
a8ce9e78bd4cea410feda62833c07b31cc35c969a648ee47d62ed2a84779ed73
ced2b8c0be933251ef696fab9a18c85b948fb57d38c3b50bca178cf7cbf537e3
ec1fad116fc61c34ec61f3b9a356dda4ee2ff620c2d5438543180e41ab531f05
268de2f178548f1cffb33e44a666f3f327bf853f04a97883861313b917bc8b4e
f24fff9959a91a89983a6895f6a9de640efebc79e6a4d59034140e71aa24b31e
8b874ff139aab520e50396cb5c412ff4390863a7d96ad74263b47d803f37f94b
ca8f9e854761e1b43f56c82d2148a578c6fec1cd76ce36dd7f456be39298f12c
2e33deddcbdb89735c8cc5a61620ec1f50f5fa0a2297f8d76b64f9ffd18d0fb4

From the PIN diode (hex format):

2026-05-27T02:37:42.547700+00:00
700deffc1c17ac419bf6a241ee534cc20690fcd45e58354214cdf1f18322d65a
cdb9400645204a42a0ac52d1dcfc424e8fee0019641a29d18386f8dee38d6322
bb3083dc40648a97cb18879eed9e0bf45f46ef4bef8da7c30600858041caf52c
41284b34a30b00f0647f64fd8ce9b45e1832987c550cc830ad2143cb7d6b95d9
0b6a74e31d473230bf361d4b0f3369a1cb0c9d10436517db38359b3e8bb011b1
987f47034a9b36a142b80f561a4d0e8a54d6c43688004f58d3a1b7653b9a319c
2f55006768426c721dab65fe246eddd2ab337e13bf9280b2b55973c14f8208a0
bc424959b4be9ca0666612e86ce0ad06fb9ebf42ea1c73c7c02aa9cda8cce90a
cb8aa7e80a4ae42b4ea9a834b1184530b145e470b2eb91d4d4a2e724150cdc71
fa3c19a0b44f0f2cdacb8e17cf29db16821bd191eea3efce9d8c4536e77029d2
49c5ccd465da5a8c8a62b8df82b3ea9f23b532f6ae98053032d6e4efde5aaaef
c7b5989076f1ef3fef36c7f97ecfa2e3dfde40d30f330872ffc1f10b0c4d2049
37b83bc646245f4168c2676cb0bd39ee1fce09dc6f06795ba62f0803b8e1b8ef
f29a456c0d7d7769ad956bde9d373c0f75cff099ac5aea8f0fcf3991bfd4c6aa
69fa5b33a2d2163d82634cc8a233b1e4479066e4d6893469bad2242afa8cbb29
2408e25b0a243b83f94f61a8bbf53ed1c2791c28056ded9c074d5e178d5b0be3
8e02b0ba2c5e451b7cd433d278655abdfbdea9c2c37e6b5daf48185afced3f9b
470bbe2bf637b4bd4e06c48bdd970061176b8a2833d327c1ab7388905d7d1ffc
0f9dd0fe3f1cfa63074fb7494db5f4694180f28257f6936f7375ddf5981c007d
6d01ed78bd10ce27ae9772ba827dfa4ecac768ea672190a8efa77e3ee635f716
87441ff0daadf966bee24d9ee623eff85a1bbba29fedd865c70a829dcf9b97a1
8f8e1f0dfb0e5c7f99719d1e39b8c02ad2a4c784d6643bbb1fa8defed4e0881b
c768ed0e09b3344b04373de5b641c05b0c8217bbc436578044d95a09d23f38f6
e90239c8d10722b1c686487e00f0b1ac1520b872596eb5742415f558460ab3fe
772f0047f7d5994d56a11407ffa8e018e8097b5abb93ea022dbdc62fa06924d9
54446831d35c9908fd9012d02c0c87f76990faa7c04f2aa695e70582fde1829a
39a6430cd29d6e7438009c13795b860b96b5ba06d81743629d9e605b02217091
9b026598f3d1d16ab20bcb0e6ba383b2348717416f38359963080dd44f9d4aad
6b9c5bd89bdffff00d5c3492ead9c9cdb86b67993f082d8ddf9b112429f1c5f5
6a39c1ed7c8a64eeb06e1cf4f368bd0c35bed185e18cd2553dfc089d013a7c0c
806a54d8a4c2558471330ff1e26e86f57ab342e5248acd5b47a020a51e23bca0
5e09ae158755e95d8453bcdec847aabb6a68017e6d3cbd2ee3f5c138ea5bdeec

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-27T02:42:39.349292+00:00
23214191220278816528326467979144909227580678807097
94800009763453482007348343217129335437685691258157
19717538548439397920358822167741973402406199868859
19519222877202321274014187928878204739477491855735
27251980156269391672458978604559654665607524069884
88358308692413680683186796000313747570644292054668
32887343218308504927525694147608441402286673638738
16733304284320993766466967731049033141622546619172
10191416193336106843083221421513510746518254326590
23090565731368124679680559045475161587216844260650
94766877215490881334869098527475341583518652197455
05816815838140814244014530562226327705350088282031
55202647211627927873783498973155864836949918573549
27278088746927581764903173023150254012341262384595
44420865244389906020974610970410878683121550856775
50376370566429917006446661928946673513440349271568
32346918066459999672229856959497149224740797353424
84654655106566556881432218162187861418621065077555
14856834296543098322957908500149140310264680670452
87602054842055390776326620138067410777657302310457
59050847332902517558689089881629406187054979074877
34658754492996265974890520412321559100528235603647
05309059213948608278172974201116244547355555489879
62919119865581217861126508949190505809377355288491
95232259462904775681806141025455685820897665156640
51922349530566727146687121158492904750810511715424
91484381255695811123405531731711982852978563866447
32946733672414657183310538412084432879626866023991
33630469203134191985238839787953896926375258044969
00148821644452201413703679303935795770813203509265

From the PIN diode (digits):

2026-05-27T02:37:42.547700+00:00
12132823726555626583769406449488536620313490856406
69327466607282667843002500264131344199348748316400
38512435585811957075416795060033286544654075526311
00002700408094245052248512487333672507491106162971
50489154297515510561125716670123565355623976177752
27710374555461668415862677143884965436007988618301
59544956478500030466081429710136107151261991462878
81891593793008608866738980905660020218087306589166
28159992426968103867107443786968527724694877691278
45623621121360256080791544422341223027456357406954
12417397019040389884307959358150745205485090709981
52441863549926626415510814931112773273558459987036
95650494030876895731091106219166470803848454690813
25190573490757556015175372904315574591987005915162
22613099766251777144023752058636424087413608911036
59317997688762942128400509560777942341911142027686
44946927245120019089699495260793757224906355711190
43558089780696395100972307384051399371153644932531
15576328990779837377810565283087471115175228002509
01208916397451148630257899040333446867266253223568
31730290775835902787625901991030575551614342311314
92275313573057849242649932005987316836279904140979
52750455618265929112302387965487286890096356025707
34779834722600777221328414891081163621887010791947
00715377866120076824092390874702458998476005368468
04499253084418441235054467927942664905303054576667
12571016560056192191341150818606236798575896910233
12455502015206781114076331785235236511565353990813
79577473075691551392524684070353630845415517364197
06579324380076102804891253903340856108570158241228

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