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-24T02:52:24.427692+00:00
ef4964f35ea9067cb47c29dbc7c808e7aa4cbf44f8f352e14b1bbcb04ff0788c
5472c65cfc7d2d56651556ff30134ea255873f74124cbf5b4c61a4a4ab3b9b13
ed1337fb088991b97924b68501d3846b0f63666458f5e701e904d1784d5264ed
cec44e8eec91358f5f526769d29ede36216dd389563c882ada07e0a33a06486c
3b8e690733018e138e8bf31787d603182a476d1dd6c96cb1b01b773c14ba08c0
3f0e9eb60c15e4edf94ae68bd58e96f499c34dd1fd0abcfcc602c92d7490fa5e
ecf685cbe54aeb3006cd8b5cc6094b9b73354fe04101c28cbdc1442469a87ef9
7751ba9438da39ec29d507aee913a163ca0c50077054822c7b98048455db26f4
ef86f00f0f99ff9dae135355026a9a4b90dac4bb05a47603d01de3b31317806c
9ff0cad669e036e1c7e3418e2197544ad93436bcdde8ac9ae368e1dbbc4be1ec
2f8671aa99b23cd40788b4ef6f2d21a3bc3a43f6c223fb59da9b36cece061760
5ee81da06310bcb664220838b032f4a7a05a974549a737fb1c7a6df78e1ccc22
339e809476bf489cfbf1a47585bada6dacae7ccabc7abf436109fb461f8f2b67
366569010e5f4d489fb27d4797404930987226fc8fbb40d226d2af0a2033e9af
f7da5e36b54d7aac7e1814afae073639a3172829241917a94cebfe53a87f2c99
3fb96d7dc5c9a85cd43b23d05084ddf5f4b49a512313efd5f10892e5f1522a50
99fdecb9de13f4576006eb6af6637039b76abf892660686a0150fbc54d4bd7a1
dfb6485438954547c9a78a48b076ade4778098665d34c3e68fe8d64b3504abe6
dc11671694aa27889c1c69fae5387b818c4e047fab9a487de904ec7b1f60a17c
cd917e5aaad64d15a425f15d5ee868cc52451aea68f7b42f01537ed7e15a0721
5b131e99d78a93773b270378c361ed3281d234c666bf9cac16ee04ca7d999a34
4e87bef20b3b6fa793f7141a2b9e0ee30df781a7af9b3f3a8ff92f557dc9016d
2c5787240c4f7cc3981cf0099b36d3c2429c0ec9216de044eb03a6ffce23f6ea
ba0781c5126f84425e877c8aae4f7adf91cbb991f338bd1dd65525292f804475
a1a32c253a11d0b86ce808ceaa5cf388e32e020b4e2b3b708ac96aeb3d55eef7
e13f903a6743ef74df01ef044e6635a4fb2a1cc7c26bc34dacd01e6d1579f9b3
98aafe1454a057c399754fcc93136dec0efab804b6925fe3b84886d538bf7d75
2937b808c087894684bc8294dcd5e73a7e712929b5bdb2b95941825c844ccfb6
c74d1e41c5373ef638d2029f1e74e3548041c06826f87a2a3088f42c3903d53c
67107089b71588c615ace3598c8558adc81c80f48e8d1fe3a1d0c1b95342a009
2239b1c9f5e48247e775d7a7d61f12b75a9feb9d023ff40c0b8395fa6da66355
0937c651735c7d31574c8e75f8d9e4bed20f110935636e91f970fcbe15acc0de

From the PIN diode (hex format):

2026-05-24T02:50:16.027371+00:00
161ffd77e4cff5619f6f2ab4cf8ccaf057ba4b5b03faf12ca70734b8eb4edb3a
a779cfa90b4d36da258ab63b9ded42349012b999d5ae048710d87a2066de0154
670a46633bf3219829c26f31fc9a333456602893d4a49deae9831ad3811d7ebd
daa15fbe7d5b41ff4217026e6ff40090caf6ec9c58c944a4c0f5b3de61e8f69f
6cc5b4f53bd70178f3a7fc6cef2cf1050bdfaf4c8fd14412d363c5461a931b20
e27b583e2f84dec960280f4d565b2470d927b4f75c2a08690a2c91a34ac6b741
6bea141fa6b289ca450a9705951b9ecdb4c28a911b6f04d4adc020e2957c03fd
64d5f5984034e3162b36140a25c0c4a803600eeb51beba59c33269a692225e21
8d99636bb62f90bdcb3a21e3ae4977d9f63e768466abe303576e58a41f117ca3
7c93c9837a529bad769516ee0e653864d9ba47ba2c8b3e7bffdccaa101ef958d
c32e2a30b0387034ceb8557c4a6a0104088bdbf961b9dad7684e9db3509cb89b
9167a66cc9f5be1dc105b5e82dd18d04719a2b102b3caab7255a72db45a16886
d469ae6aba4ec8a7bab211acccf964647a6accdea41fcfafd7bab04dd5d88646
83ee9e6a1709185c13123476b645174892f2c4d82d84377591ace1355fbab905
c134519bd16d8405a4d60119e2871ddabcaaaa787b9f198d1f5829e6b5b23035
cdf250755027cf1ff698f92690ce3a46d55d8cc505f2d7ad9ee23337beb61653
a649b5be850b5c45441ff31c14cac6bfcf14eef0c011490cbb5e8ca13b661005
0ce8940ef9b50e550225365dc48d12b6e1a62a534bdcc2e50fb0995aae63a4df
252dab5b93f05918afec4768aac09416fa919b2dec5394f56ba6e262cc36f085
173a0a63c886684aab62438a5479d052082f595782c951ad544cb2e974362047
197cf93ce36f91ab13cdbe84d0d22734a80182cc6a2f6b899b66e8c27051df35
8a9fb51e5c8878f7e12981f9de1cd7954d4732e82141985aea3b536ca08c9315
d01d430c65eb6b433cb23675db1550033946f3fd1dd1189db7fd7d6c5975a667
6a2c1016bad8b47e21687de23df29de08fe6ce5f00df773b183126ce189eb848
cb6b8d06a5f42dab60d2da79349b308a89abe47adfde6b9e8389ef73d2aba89a
bfd5cdafa375d6fb0783400818b425d7f68ff0654722c82463fb5cc480688598
50ae1c51c875c5707f9625894e472adc3181c6b3dcca029f61113fba6fe3d412
224130726c548f8a12edf96bb5e088ef4356562a7d364623aad87d9ecb47a3f2
0513da0981772b8daac61e80dfe2978fcec19638e5dd8cd12d720f86b7f8d256
0fc7b79192102dcc587f42bdd9a76e178607b0dae27c2894920643b1101001a6
d98c248630ccd293736c19fcfec1ffe55861326ce58aac64a01e1fa2b647d14d
cc5bc8ae0e4d980d5ea5a2b1134580f693c969fb3db573f426d3464dd431ad4c

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-24T02:52:24.427692+00:00
73009469062480244199087076916882752788767920408414
98922545860121864819786285356316187691917697646471
59551919550837458521368233013207159902008801042077
82009678424553439582030558543309378660364207635806
72085942050751014219423923350324427109290877762719
60208608926314588212217439425053957710889802451644
94337448063992980975551553796501944089936836056826
19818648565741077419619912800712843044235204328538
34151553577419838502065475449687056418032979192328
08590554996542335184745254887254048875473413705378
60073680114533638858679435895554062396942960991688
82003408567650676090516973675528220942283451582848
18917256641733860972742488229167970970314343035401
05011495777259782571516473485214384387643875103251
75945481772272262420757407545763234041362523697683
68274453638509259768925935803280548135190846824280
53851987960606991257830691373896040601809777756182
72845649697167387276187319285202935295437553047117
03224870393656280556232940780427715472250423319661
24452690707721643793940482692604804701832690073391
19305338471959390320959750295298029156722204255354
52783590115911674720264358141329677555635843478525
01094487353612792495522809555494665614330968036635
86072997181132669435243874792245854556892985374147
28681761634437581784080870923646021178435912380661
85634458036716010478025364422899940795777230092121
79527020846087955317794719091484048246958472345691
25174155840892353770328830485826134141818978858965
30923276829977306597556256025930168428659204382242
48364457036003161237832136982172894033887328284241

From the PIN diode (digits):

2026-05-24T02:50:16.027371+00:00
22311997591142804087867591034467075284785867216911
77543738825957665244188553740435162232020184031070
99593352419411495451528696404764573126292926896195
90259165662302101100445688686492799759089780590120
67084405117576436818999770264727322388624732964015
77869136123980924208051044456374988365072031667837
69105105492758809438452711047392324924030052645222
43542010379296680396148190868995500566463494334153
99078247448958337473196218320271038710886431172463
24473122825573184922140156008671864439622361014941
95464248765612528485247406010408399785047857798056
84554503660890299305814541041354431643607083379014
69610434057406867867867817720000220664317586767734
70315806230924921918521882692372469645325517457253
95868505935281550932056401253529887070202359254131
88418178485380178039315238445870934097057358515590
82228366738190331192696831282098912092177312879440
61590216051248148114850237549396411882664283759415
76539074996437457191478924757104709248224555458348
07669854332358109934047471986738842182084789873081
73847678165432712524601145711990323952680130064707
37550294128153385981309236204129284977715033655290
59830860404721296712010767607854172180035770292457
83250889176603064416228680263304256157439500195924
49382458847207410665457196215255483837712207583137
15716854917563170731640824803743017134369992962804
33528074288117971227503737787142492998790259971763
86111834654814088443381807813667868642255470357025
58716305190929194341709830285143935056404514153483
86159983454616458827668967102334077624404846066777

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