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-11-05T11:45:51.512105+00:00
008249d85567b64ca7074479305b71629008505dfe3c4d2f990a36e3fc4e9c4f
1c0d8845d862b78e69b27016610477dc6ed38dea478dc16e75d7751ef14c7e98
0351c6fc95895cbad50ac6496b4849690de8f397bbb812291762b6463ad85673
ff8c956fc57aeaeec37d6ee6111584c321f5dfd0f834e1d96df95450ecce7552
c173de0682ea4e7208b8454ca744c2bd7d0f1997b35d17b84ee301e16d8a67a3
5236c0a4c894565b49bbd75235522a3f1d23dc9e69f86d477d4febffc31de5ba
fee122f17f9c65a28d542aa3d559ecca5a1ae5231d235fe5e17355b9dd5ee295
4f7be664110cbb7091f01ccc6bee010fced9e1cec5f62e3790974fa2f92e5f07
8e471f12e34719a64f2e7aeef2295b07fe64ea89e6f8fa0ccc4d663de2956afc
f0b82477475d11910083e233817ced738c44760df391924b24ec1a2802d3323f
e6b2c8a51b2bafc92458fef00fdc69e50fc610a9e32e39c96db48675638a224c
e37887170dfc8d411950e796d393aa0a545259be0d6c7fb1818a0679d94acad2
9ac0f5b21d49e931032893300194c4c323ee38b90ef658e51a683433026d699e
d4a95cb3251d2bf10b9d7990f1cb68045c926a24cd96e98a9450ae93c3eaf9c6
9b3d606d77aa4c1b19a3ad6b56234018ab79ddfe0737745ecf74094652857b7a
8015dd4d3cc5e4653bb6c29b21b584aff29cd861dd40531aa80756b6f67fb946
d67377ac469b5ccff2b0ff6dd80c3e3d2dc60e7dd6c14e8253838ccbada785f9
8f8a8ad55286ec03cee8ccf5c08272faacc6df5ec0fe513b516a937634e1c8cd
ef92174196ce9da01e5988971b50eb0b6f17ca04b6cde6bd9082818fe1ba05b2
0054ac5be7e33d540583aeb098a8ddf8f1ec85e46cbbe5e1fdb5a2a301de2634
888a29fba9d3be27b6b97231602b79288861b6d56ab3070e7949fde22db80497
7919f3ab408800bcdf42437a3ce2a01cff54ee2d6cddeba4ed095b1e2ee3dd15
ee2b53fd3cd9ecbf9e367cea574bf4b09efea019d65cc6d1a7536b076719af3f
877f2ebe5b4c3d8ee00d08017e703ba7cc450642f1014f5ca8ecf649f759c7bd
76fee3444db15b70db52b96b6ef8c06f69201ea19621dbaa4667783e5cb1fba9
058e80863ada5bc65ce05cf7b362de5eced6160e3299ed992af90def7f90efc9
a47d0fc67c8f284463695c38c0b5674d028e94afbd78f021c116e4fe2c91dc0e
7f3f4c4a1b6dde322f9a77606a5ec3a1c21e1d2a4577ce4927699e8af56c3d21
0719545ac1b4a91e8f8e58c8b4ac6466ba8734a39b0c02e22f62e07061cdc0f2
4f30ea7052b0b495d265e6a6e7378fcb92adad513b78b304d70f8004a8cd526c
b81b422f0bfdf658a279c7d73e76252f260da6d2a4a2cc557b16d97bc532d402
ddbde0145934c3e13bbec6fe896c69c36d6f8eba9b7f10b4ef2d010d3050dcb0

From the PIN diode (hex format):

2026-11-05T11:35:13.508854+00:00
6b61312877858528f77090aed5acbf9a9c0c20dbb065a45be1ac5098fd98359e
4b680f3b76d370df55e1d24a1edcc6ec157499cb3d964d4167ee3c54fbb250d0
64703c939c638b29c97501af8eec3976a54c007032667c89170f5e46b261d601
fe1c5a313119fb0d73be09fa766e84d4915c0346c32b73d49690994b3b0de992
bc1d1aa239874ef0537b168acc6d1174913f8f7129e9b641d3596d0d17a3d1cd
8a6d23dbae2ff81919ae8551e7879c2dca6f835230c4f4ce952123383fcbeadc
555e2cedf648f739b750b78f9be1454248ab00f5891d0e3bf16029c0e452ae2e
11e8c897cbed95174cfe0770bdec022b3a1369960d1e7f4c25c10550afb83808
0e5b223fd89b883e5e307febeefdf935caaffe2a9b804ee024ca49df112463d9
7ff1307a2e829352b89e131f109ca16e8ec6bd05c0d4ab2f06978ee63d9cbafe
9f1da12b59398c011cbae6655713b408d7d7149bb324c2a3400a5b10e6598be0
fa49d587765fef72f70e88b269e730e3af039e7424141c3e53559c33d6967b61
b39e40a1d40a30613f811ecf0480101ca8508e97c51722404848466ead9ea7e0
fea38c6130fec8c85fd45327dc4d8dab9db1dbe92a8ab962e37895ced73d491b
e2ef1d45a7ac08c88e11b053ce0b325d6c29524f761fe709ab818dc8ce6da0c4
524aedad5c54f8df43ee340a78beca245de08d1b76f4e35e15d43986568cfe09
9930c3f44a10d5293f6d1497cd21a3ded11a301839fedccecca1ac4cfbb5036b
0bebdc647ed733191138c43818b49a174cba820f20e83a54649ea8e14bca5989
0e54c9468a1e0d2af115998ebe4386a1494033412104a5b288d1181f475d2a8f
6c80022af0bb33ef26aa9ffc1b7a36dc9bb38a8da7feba90ba0210a8ce0ce934
f94262af85eeef791a8a5fef4d2597fc88ca22de3a5d2a2ec280328a4d8dee69
a0de0778a3e6434db88bbedb1919e88341060fa79041cc33ba743d62992fb0cd
36bfe3cde967d686a09915b45c626e410285f8cee179f33a3213b02d1d6679bf
0150617da98541bf6116023d9f3c7def15de6ae4236b67a8f3af553bcf9ebbf4
312d8d45539733067d0954bc77ee54947e61b4a477729901295bc32f3a1e8f3c
4623f4cd318d6d46ed9a00ef567816b17d90d9dd2c96b859325bf8cb7bda7af3
d933ee928294ce55c5adb4c660f923fa78cf6385ecddf880065d05495564f83b
feb649350e70e8ca0d9ae1f34f21c19ab157d7abf83c15ae0fd336987b4b9ff3
39e574dd6bc479818e410d7aa5feee3b2cd352bf0112d16caa2223a3f3327fea
bbb310657cb484b05f7529fdb4796b585b52f19fca1f895b937d43400cfe1bd8
27c8e9e79950a2f0d80645b60c60c710c21f81881c5e2edc8e4af60cb0e4bc7e
c0c186e87205aca44b5af2be961725efc58a9bf90d265a49ae5bce1484ed0ce2

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-11-05T11:45:51.512105+00:00
00307385038276670768214891139844088093607747531054
78567928133669988342057812229704191041714193101717
30762652038198493792861098730772730513518784184123
98827058861540491197229525101721329533520984801782
93150630781408846976676894892515255179932384780109
38036382549264488691738782538242632935580509712579
95298634275601624184426389902635293595158585944979
23001712871245280701159746554451796246950742713118
71256679462241910700371277026149068436197193174500
31512924154068181345467536264002506378652743753688
15051598166946570980341799383476203523134165258050
47701084828990130827772938062174549278297349034047
48014896953556851488260452510209055869927937294311
57214404049246063650384880744795985561960919707627
25637307863564247121075516941609708233232228217760
97015982945533813275569764832668078682278570151972
70559276091262614598142593783083314073673343383882
34039230147298949281598106471852462365505760308936
51278011112304828944302943860578008472916184053174
76526833088781626301385236384169903982851449964321
40369782067907142173458404512125716436008866672260
60288445086409913046214383609158542487757658602592
98678307070325756335274690917661421308012612596769
06660179926873899989186877779112828507109211053230
61503370700320629277690542283458919892927998942214
50535342132744642515982443406899059256928103770242
48758920339322444514276376742709504754199606949561
94302942691973390558380861330725849093806930434288
80720002863552635512024798129792794812827680490166
55434673738159207904152804688208842766471188622199

From the PIN diode (digits):

2026-11-05T11:35:13.508854+00:00
07974940193333401244747291545612327601649172805252
53587504155918128574309821165361507765036084788000
12604756993941170175425718657600125002243723159470
78970128904949251315900918103245920370954315504453
75591346882926625735788323223809171645634313418265
89091323633809357447252574338135564511318248964933
35566385944472578380834355696672710037291459964192
82744617514923760712890243581905501330277637930580
75845608149134635536629448275375425528783673173699
27482246304782845819311656611042988905927147065142
61568659296143895740012886018719800820557936946364
10911689397335189514143678054875035816362028628385
56515023977958646110489763293004281628688042519723
34647272701073586763409748958339774171577742388598
20496173272969677208421776831150930841827918310971
29410960968274739284675210209036934127189421573486
40095348957416416309205133632648245761727681030711
00265125175696562480542376863015325884005868758937
14847038301342215342906734617364516533046578362431
71934243082802428751387059272254557938416786448602
16681252669875332126389577375136345893424694285038
77410560072063677784399025253165061567446551861661
98534776549103346053218092981065023321585019764529
02219101809725693365919722026159602521063507036875
85595887494541698351510625098488198448269780641914
53014191954758304360703549410970540086202277254444
50848950912322514630488597738098963520993328069305
73850059827353141213547933935477877160217415545223
75595716079621294265132265594482910118087034356350
27877916012480327695174180210788918259313791472567

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