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-07-16T00:51:43.622998+00:00
6a5ac9a545073fd37ce7d47bda845c7967ea644a9c0211720bbdb26f0c62887d
b4581d2b9c659190d1fb5e7a8231156a4c7da6477ed8bf7255a054c5265fc7b4
d57a7853c1d8aec19246e52b3e950fd094dcdedeea4fe14750db0051f4a66d15
6714bf393c600829e0b407d6c9e1c45875cf8f2747710b6aec6657023c776fd6
286cf7d6c6722a696ffd1fe00f5d045ff14fb485b186705e4bbc5722f5e0329f
2a0479153446a4713a846e3438cc0209570236463c8cedd428bc44900b96a945
b0e443e44296545a009d2003fcb76bfcf1b7b41c8a3dd9ca2b33eca79eeaf87f
d93f1c5c7fd949694a6198c15c48e60dca4a302de23b03446ef848d568c816b4
d5fed9c447f401e70cb9c5b2ebdb27d9fe8d85743b3b08ba54a907417a7402fb
e089941e7bf99639fea343ad4a627a6a66a6c3721b3ad2be572dc680e8cef592
122831a78966bdf0be07d802a6bf1b408998118535b10cc7cfb4fd2a0ec5e0ea
f372f050fffe584f74d6b1fe5133be6bbee551eaa92dc777e8bdd57b692b7cd2
102dde6a5aeaade7886510aedf14bd4e78610860eca2a0f62f2e38ff631871bc
ce747750c06163dcb43175c980eddc678ce528ea26544218f15237c76e9cf229
f1710089123db183a6463f9f5e236c09895575e9da32f72ff6be3d93f53d62a9
8bbac80e9145ae57fc314c9f9eae2dfce37abd4d5b5c9564cb2ccacc4b4e4630
3a8b5407a458e9a59d0e475189a90c758a6aa346273b91754a273d71bf1decbc
1f867f3eee7e66a318e305ade59ac76fffc914d58f0d6cf5dd0c4e1c9218bd52
7f53bf07e8aa6eb39257ab1280e0cc66104e6d6c1693583c86700d17d59e1db3
42ca3ff1b226f33d68ecc750a62e6f0b43d0ae9f0e96e736fdb19d4f70ce6ab9
b7f2ac86a0c80aea1be720d552e0f056bb160a41c4cc1b150bb0a9e06066984a
f0e2bb1a7adbff9bc006786b1b02b95f34b63e42adfbcfecb5fe8e2f37b8e196
30792c720bc41d51935359c75dea605319d1cfc87b6ea0e216022c61ddcce9e0
cc809e8efb0f95f74206a7192bbc1e271fb83254fb53f40aff423c013d8fe0ca
0cbccd6afde51fc61d15245111a05c7246dc7a3dbec26d2e4e797d5f6f99e8b9
8e9e582bfe60dac9a468ebfdcd47e7d8accf1694dfc9aa761edf3b3fd67a74fc
5f88bf7922a6d9c2dc130f393a6442112aa70ce9c26d6cfd0727dab872929aaf
c9788886cbd505f2abe616462a0027ea7a8bfe10c17eb73a9a326b29fb5ef925
67a5cc45de14ace44a2d8668ccefa1507c912c87982399785a6eaad385583fd4
f6716f1a6ac040a0128cdc4f902fafcd381c8ab688f8dbb0449dddc2d90e94d7
24bdde178b57c4e662b273dc32074c9073401b624502751173ef85770ebff44a
1f9a5701618e51b6e7574b4c61ba8c73ebe5b4f6d803dd2ecbd49441dc0263d9

From the PIN diode (hex format):

2026-07-16T00:52:28.023126+00:00
e6d0bee2c2f1f0d1e470a8e97d39395a0c3a45e5ebbc049dac7862805da97668
c834bda13d20dca10b51facf3ecc3a5dad3f54994fcf83f46ee1c31a8052eb65
c077242248dff6b325e0188dfc9ea8d21f66b9736078f1a0f4a463fd5e968d40
bb011c904f1e04a8f87962f05d1e64029fcf212b1be16ee27b6a76ab8a6d29b7
a38c18385dbeb68dfa074974e38f77c7d296169054f368d702f0a5985ed4582a
5249487af4416267a6c5b9860fba3a2fbf909c2979b1352f9dfc7b033024cf65
3082648ddf9440980020a16d0e5fa1f126f3dc7abd98a57c2b3160b4789a8869
379547787b18a0aaa5521abf2469c2ebe253281c064de90629dbd40580fb684b
f029b3f8b1a61d995857f9e243457d0e412e30fcef5794409419bff8f3abccc4
c1e23d1ac36f71d47ed4634d2a65fb4179dec9166e9bbfb3562e62195aeaf6c9
50f7d4e3d5949a8ca65ad5e9198fe805dc42db271d02372e89a40c544cea11df
f2f78f1cfce758ee4e17b05b44d16676208b9be7f77095bb62db81acdb6712c0
245e6d5e3a369264e3cc3148b1a1dd478ac026d4d12823592dd6d8db3be24518
9d975b95a2afb2e3d88bd3980c7b44af54c8f3e3d70c8aef6c47aa38b0e04f6d
880437c27609333ee6ce853fdfc9ebe48fc751e74284b301fdc54f7908ac4811
44f448dbc82861b29a02c46d82e56c99627f73fe8d7689b5f272e569ad4b3ba5
9a1d430b05029e356627189fafd4140051f6254a4ffced44c1bbbcdf79318df1
9bee4e75241b939910583308235fd6f622311cb412861376121c61c8663896ce
8c2e25702db92ad050d9fcc76337df5a5319fdece726376a9ca88bc79e7dd90b
4ee5e865f95e37ec949139514d47ba2a3d9bdf5db7bfaf082ed0edfe4d13c184
021c55a9f4d374b96a761f1c043cd8242432fc0c68d6436c8860cd43fede9483
ed2c2178002a8e414893b7c381577d5e331ee53a176e484d543136edf1303999
134171919fd4ed54ea1a4a47c031e9d91a84ccbe4806ff03136caaa53d2fa15d
5aec932509fcc9dc89aab9a2101fc781e0c633f013ebeada07d1a936e936ce78
7c3ed0428416aa9a2479e9ef0edaef4274703d5dac3530e70b43a0c823e16b23
6ff4e08d3078d7ab661e3255b26343ae31c48d0ee3cd40d53757b74b1bdb7857
669d27efada74c0ddb4a349d2d09d21698595693dc9b39f0b85f624be4bb414f
8360c0f0272506f30af2cef8f7cfebe768a53d1c15681b3f1953b614366ab9ae
5c26efd08bd3540846859e65fc8b4e3ff771da07ff777be6ee9ab070cea7a66f
6fe3aa3f5c130d1e99763a85ce96935f179ec599124a3336d0e31f689edc8bbb
c7834ce8e828b9ca9b73d2f3609c3ea1e1c4a1f6a1cbb803e274638c7d3a119b
d73d4e829513686839dac8469a1a6c9e2f9805c86209548c9d61550808148aee

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-07-16T00:51:43.622998+00:00
06906569076324233292210300745602171411897811129836
25808829435601454494223049210676256671269114856084
97389599802220839374934670436249154879718000816609
21032091576096084180079688174339711311060287026019
11400898144205113115930495798033773412947588873450
59420421215270641358321052560209870254706040408868
44115069697667665084900057320383078380283861435167
58276328922773057497529392721374484559036810720422
80967101128597783941331659590886846907652216023748
30235057636773749822060266951427589087459828461840
49673702899007026691276437521733537712998042149714
80887916778151900790816945991989230543241645069073
36011674208978209708966260474656992413881619809297
99804917280340403884662482559910564113003718617731
66706359943508093785175047906147619869398614456974
87497659587445228977919249004475787048583984076488
65571471813769121738066370395945177439611391298831
34276226026324057354991120431308127828462489822783
91077010794687711828021678090822478860341213235829
79666378386104998066461111677459145054775779120685
83723460102732828687221065962721117669960252748726
22559206200727028595528262667381424755845048214414
11962981478389999396832523106022024497285842154966
06672543883039318450848310666001614312880631982921
36811760921470226190940946782125951153854258884396
64047172224870183059632216953691213466941915575800
66174267129409080739841446547520363405712270420039
22391693268358545007419437036569207274453404618024
45443552355320901070338863131126069264601840794447
75562838823676685794144836892339879698781550077644

From the PIN diode (digits):

2026-07-16T00:52:28.023126+00:00
90941268255757901258698804577220982893691804528961
61326111816258937363845379311095262882019219363472
79372441586831028515962060649994504164870128447930
04682198933000025933432710230618713809418363402456
93908241077316431999502244840402655294884282737222
65980366978534158658479144564121775347572303483601
48300041486452003261091495613822895265244349968020
54360555497120232460706582269136059483402806770641
05280475417977662953888767692514654648874864482591
71969361269511132699774201652122105591798646982590
80485440669025430566392902554637641284761743288878
23769168021832395512498798297203189236940994585446
00497277617138923840358945596924575191496275783952
12236875841238087170567679093604559418095162336343
99816632790197792108727217687240977854029609300853
98271541183781140573755965542967110502585302392459
75200081377479689387882149415578173627475316885108
35953449288018341918182897025650404637124585428099
99559083253855065668399958251178019455484557817771
86426155938391750846771993320228856916850618312804
60363650120467083696674831443320004242657247839529
87259451305823107277844954485753196513455984267471
92492632907206031908706561476193904737093770856216
31992998511907695454202462663222705436211466161261
93725348116760350735114148207102305085789967744996
41146455878375272087025739736776137452574509225289
86475557849598758765793196923937061004656128210427
63258382205406857492383984087033580139786313071923
54761267661111706392191330531858335047952358975318
74515431045839879931764085551596566261966161840316

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