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-03-26T09:48:54.103044+00:00
9f016d3af5eab942e5e5e1a3cb9c5a3cc47a8439d3957c0504281091de0273a7
b6644abfede08eec4346cceb2b165fa2911f9b6693b31213a5cb78e08b414a4e
ea3ffd68932022bdc11aef9acf14d5fbfa36430a7ad1ed2d45325f1d1795dee1
b4d5f62148e1304d2b899767b4af734d42bde71369c76a2c4c13c257c002ede0
bf6fcb6a1bc382a3a06c85ed22b1d25b1636e8e30cbfdce10f97f7579e1acc5b
7714ea8aabc43256693d462ac7ab06ba216710d7b7fc3dfa28fa63a9d8bfaa01
803eda75a849447cfa84d677ec24681e23d004ed30117f6cab4f933b97a7c98a
f81ce2739fe8fa9e2adcafbb003a793952f21d5133dbb9d34ebfed9a583b2fe3
9ff5522cd0f7f6e80933dac1ca7a8ebbb0bbcacd0f94b221e5ee124208a495c2
bf7a28535c8c73646912d1a3d3e690ff7beb4080acb36788e9050964f2631d8b
9d9e8ca536514f2bde17882e9507f813c97ca38c179024793d3fc473158873fb
7c962b029e002e259704787409fa07beb3d4c215028badd0a3e0df56a9f8763a
228a6f979c0a8b46f98540b44d9de53a4925fe1368a29ba73fd7fbb26f914637
5be122a11ae0a4b692a082da85c368213c7e8d6ddde6a0df15fb2e1afb62d6d9
9dec30c16a4ba547dfedcbf885d786be16d8df72c8c6aaea3e28d8814d4a5627
86a534a8452b36564cce231779e5b1456d7b6f3d198408b836bf1d338cff2c25
3449cf4a4c2c867a179d85901afc6c77932a4bec2c1516d9c32cef6a73af4d24
39f92bbbea399bf4bbd3d51f43ce02662ccd7c45d8f7be059acb84673498ae51
376f06062888452e29038f717382373ac7b1a1f4e265784ad7af6a3d15e9397e
80eec481733e3395cb21d7df9d6e215aaa6c031ff71e17f25740cdd873e355cb
9574b0596a2690118b44c20d1bad339144b03e9329c3d44ebe7e95463d52a06b
963db653d4b37f34a48174d68a2bc93a138534c22a0e6d57ea9ceb57ba548306
8413dbd66debfdd6b76e549437f77bfa6f2393740bccd2b4bdac1697868d590b
a4c15fe9ce0e24cdaee476e1d3d60c8daf23df883f4572c9a113a68fa4c0865e
6a4080cc9371de745199287a025a2eaf0a0c75080e8a33b3d600b324f1dc9fb2
4a2805279183d03a2618c866a91724211620973735be4e1e070972422877cc43
bb1f9d05f7e576c1297a3fd4c6c0c2400f2ef3b0d6d6652d96cf170370091b18
18fd7869958cfc80d483c917378ade69eb6d18767c74e92080546ff9e94719a5
382bc33ef4ff2a92eb4d6ce0105ff4cf556c438180633a5d9dfb8073474a6727
ebbc737a5a6260ee45d59a2d96df670ec4b94fe626ec43b89ac230e21c1bccfd
c57fda1cb5c6d391a0b5be45b98b3270ee6699431f7064afb6660fc1878556d3
44361317885b377ee0354757655375f6a185731ccd25c0af685785c833058b2d

From the PIN diode (hex format):

2026-03-26T09:44:52.902411+00:00
e8e5d060fad66c5eb57a11cb27540b6a35ab4c399fbd5355024bc2b77d8c3ccc
6d430dc4361ba2e030ac42dd1043106a9a872798c6dc726d93f7b8576173ac0c
36fb6afbad3a3048fe46ba1dbe794ea38ec06792e827e57fc776e15b5d7d1e91
8677863edcece9b834340d2790d6a0d6e75413e980953d3709f50134ca5e31f8
92aa7cac4d53f2145ee7f0e03b38b3ffb1eecba3908341f8a77a196acf261bcf
e79f00f372c78472854e6587da14a06db883358566469fbaa1896769695bc3a2
0049d140f7179e3cf981e087e19892a7345504a251a59e758df43d5e71955287
77467940bd68282779eaa08b6f42a320dc0d55830c66906015971f170881d6e8
54f57d820b8b20898f7a900bd31c0fd5d0273bd255396bf729f3877dd9db3f60
8cf6d785f4464b7656c2098da3837053718d19c9066269fe535cb81255cde843
13bbe11774502678a58d9f171f9eef4368bb9b64645d8c8bcd1542279c126fc6
245e89f88d305c95164d1bf78f3d84ae631ccd1c6a1087a9ed95791f22def8c0
06bbd560dd64821268e84678e4c06120a104d40dbc814a546f701ac764c310fc
ef5eaf8b6963dfe42fae43fb5ec6156ce5052b0c7ba323892b2109980e3a1660
53e6c8f70cb0baea8c165f6891edbe8a06a622f6ffb4dc9f6ad691cb833ff4db
4f035c0a55becbda9a6437c239e6c6cbf1e7a5d7c9afa130d76fc6491a9fb12e
a1f8fdb00a19952adba809f635fe0fc6ac9803c284e1fcc0d58c1f1724c76202
a4cf186fc7f26340515c105d1b31ee3b54c3faea1516eeeaf6faf927d757ccc8
9425d4de00c3cd2e49596b07a014117dc049dc898562ae14ac04a409c03e0821
4c7b3bdcc8479655c3f764f9499c8fa8d03601141bdffed3ae5d06757988931e
c025613d50e6ef832acee51c547acc032cf7fd18b7561032fb418cda5eb39f6e
61e590105be6d5f35bb696d2e9873d344b6c93c89c1d8f91c43cc6b654f5f007
1f9b69905c7e36659fc5363923819d939e53ef485798d968617f75378229fe4a
b34052f28ebb9d368a5e0114d2c5811cb856aa61292aafa72d04c62170bb5a99
51a080b6274e5530e2161203445a5f36dac06c66dbeb7447aa55bf079f13897b
eefe0cbabfcc9bd66927450a8d7df25ad1664c441cbca6dd8bdb731ef9bf67b3
393744038fe2160fb7fcec1e498dfeef85bbbce05035c02ac0c4d8a051caa93e
dc62dccfb63f934b58fe5e46b2d342f41d5f91a524c16d780c3bf24498e94144
2dfd6a99522a57f046be589bd8799ff02c96b5f9e6b9788cf8cf2472d7b57319
ac17c6cfb7eaf170c784cc64d82e1387abb71ac0354ba6125d63fa3ff2847b63
68d3843fce398b602cd6557628cf7a85dad512246bae724f9355a8d8eb3a5300
3788bbd03c3c19317e46281b644604e332458dda6914f3c44ca7e84581709625

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-03-26T09:48:54.103044+00:00
59010958856663569060962232574924050440164502156782
00749142677043229562453155024779181965203965747863
04473234899326542054671022456950952923498033724877
43375103807515776689190599064476199487920291110627
95306360083334779122541291155187582691192038719650
86056170429971068633031683614099699170012862176873
68243219360430350448172708717947595167382815595842
75870058215782298151857891548859475982440951932242
87768715487833186608644994912240839240150005186344
23642872790336050900992939575840655481794323364649
07192463402344362161639615213615245043025800463751
04201609079079942102397363866918583438115156103970
33648077575873371904625567637811457055913461266482
46603033950433602641096021462698574893067565713334
90221498706240297774863934655268694354867635232177
69092311612532088454912951404437527374764434222357
33442608194742754421229544061575773657438757558731
67020244246990055432035252748155110606403669464103
43131530555899776101207475066121572628962915625149
33571033907008033130238764158549167689063844173968
94132773514568766247419578902649706182600750618283
79275264291638435819335294421409875687868431063219
09831084485523113547161180897222513441891164939514
36741812417535366369146119664364923494066428471316
81534022029046751012170814385179007936597874400539
45315838240269233633223251555390783007091466401967
87315705189341226398929464154676014550230312092724
24200549402831235538050924182416322884117125655643
95624246770816958508672928995893572815717403398815
22909896695445500314968579386784549448282797272881

From the PIN diode (digits):

2026-03-26T09:44:52.902411+00:00
96089481221739841106537176575989838502759483254060
09671396542762487266166716065435395298140947848797
15721254067358487270862990217863429203463927991891
93253045341934628452521339446084192849615509015294
49467024727783209459567977634431656722250638275900
14993214337801352060098431533302705986613703050591
95620073642358602935524667528504628165581741619413
49823519702164890440392160391166633213853112024496
21513123082984253011393237432244112815395985570741
35256396403370751886940941633112831341250698058392
84188567198723168038206541592331586704875500009340
39216639561811983694374148924922772743613274992828
06163569492131349206879600301804702092973261041388
29748411122699009516947539059947746794982108054312
23633537433309521458229683127686402295044590380666
34805906453163790392108590540055945798657561481198
73265977466176102549426809531598725203943292403123
36999802642411999964819216932749598495212239874837
00954673890707602017259273373398742072046409926208
33762359715085950073564368540120277493061721364730
92379761803142288422034424838616506540947959109744
16919182503561527508475629434596609882840731550544
92265401599754573529574758837287520497271755304174
79648242875754389401209729288486709741427567450498
33128790538160288239788548221803689095549208021671
70859107591937231286915505396910412590027668288866
39153091037957556803432215833073413387888053924292
96608169629882634775889470786629954565369309201259
68526568450653824287709088552159445081852040361481
15257223988312993200461935718326925375661893996332

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