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-10T15:42:38.519470+00:00
c92997c5a245c1c338e389f1a588d8f526a10d30b26061ee4e998f9594d5c6db
f254964eda25a32dd775e9c38b1e6fb48a53d42296ba22f61b953c3f54699e19
470c02b9effae90b36e79ec6d02a694374cad731f7e05800b6d5d650d8134d65
cdcf11ff2787198e371691353c934b243f7be101ad9223a722c7b3f22b295644
839df30c2ebaf45e25f4a59f497d5e8eea391c26e12a1d4d1a0432b1d3c3e9ed
85e8193ffe8f543b6b9e4105f91d02110e8cbd76db03f893f2a551ed4f7fd226
1e1aaf341ee8f05e415b2141159fe6b11d1bc103d273aff9bd3697b4129b3660
dffb146a4f9c8f04d1b6078a620c79f1042d7984c56d14ed0c299baf9a037bee
8ca3d248cc6ecdfd261110d5299c203e120e0ca47cd3a75f517253f344669fca
16ecc76e63137460981e81356452f8327ac3552d7c12eb27b858ced126a754bb
c0880f50d7c709d585508bd349c36d8537718b5298a825032d96e1c4633c59ae
15f3a44f319e19854b188cd973ad0b42671510c2a0ae509f2ba9be087adbd086
75b505a2ea14c1d8957cccec5b47b2116412d13ecd13002b1d640349b36ed9a9
235f86f3a4fdbfc9416f0dc2d7eb11bb1553134e38dcd486f6beecf16b1b5a49
2fa461ed447f3eed53b75870a2ec43d896e1d7b3af6789adf2484d132b0e1ba9
58b1303d9d160620e920bb1671612d2b9bc10296047071d3bf08b74bca089849
c2957aaa203c47682294b075d306c316d42f53686848fc2f02d41525298c92bc
245efb4e220b3abc5b9f5796015389141c15ede73898edda1d582dec1886a0d3
7b7436c6c52d308bf6affaa5b4542d7b0f6441ba38489b6ee5bfb11dea66ea4d
027d023a7f8593a2ce158435aeaf190a0c47949934f466c5de0de9a2af6bfc53
657b20c01cac351f41bcdeb42f0b2b51bab6ef736ed8b308ef029df18889ad0b
8a50244891a7c632e38d01980f7e1e90a8786cb9e08ef784dd79fcb4416da122
c4dd5102ffd7cfdc76490979603567126e3e936b1f70e73df7a17d6230e501ef
d7e493ee997503d1741b36666144c84bf5025b6aa84131d1f484c8edf98f3955
6af095a3c6e28a65a93f812a6cb33d0719fefa853503e1622340ae22f0acc9a0
e6756f4900cb027e15de4552d3c72ea254f561c2f78209baa947c737bbbfdd65
9ac5f95c7d0c67786c8a61f5583ece3bffbbedecbcaf6cde6b4f8cd6f74db032
b391d0cf486eb2ccae12aba11b288ec0631b769b31a9933e1bebb519fffa4baf
ed29990518d3d157191abfb4e8236809547f812049297ef7b37534b34da5e071
2ecaa89ca6534339d5c5569fee70498d85d45ddefff30594984b1854551cf50c
9d0a88e4c6f8ac4633d7c26147a90e485c480888776706b899b0708708bde95b
7aa09172e7d748170d8a8f27da3e31f4936eef196421a42cb5a3c0b0782aaf43

From the PIN diode (hex format):

2026-05-10T15:40:55.518940+00:00
b0bbf34812e1b0ca7183511e889568a9e819e06f3c88a67f6e15815c0534bcfd
355c5f9f6fc0c1914dea297779fa97834ae785aeb8ac5c31e1e5a501a7d805b4
1310f5d69835ea460a74abd35c6eeeff36bbdbebbca3bad512cce32771b0a6c7
761cbd18b49b4a1c8d0ad4d9fa355ed73b2035373ec716fcf2408804ae5013b1
3fcde03bae7e874ab700d29c0d9454c1d398edb4395b73bec8778eb18dd91e6a
f28f1b1e6683c83bbdca792293fc35daae4de9ae3efbdd1f1cc2a13044e141c5
7160e6eb060e6c20018a0808ff90095dde5cac9c8be45bb81364b2c83b6b617e
f100c158ef24b20b722bb2bb540c1287ec71f77e548ff7d1da237e953a5c82af
da21b98501bad4654578306ef23b8d8b677b27315558e0e4f6fee95635f9845e
fbbc186f3177303a991b8579ed7748b85b5e33cf003941b94792f0df3b1e76f3
9431a97477a0fb7052336db06613c3398071e1b0b299101a9765b776a4377606
858d460977f5445e4180ff6a15535991e8bf93631e3ec8fd08c7d7a45c42c480
188fff18041b42bf2d5c55c0ff47d93d9059cf4e0cfd361461c82c4ff3f11329
e6b87ebba4dcd887c2070d1af82a5442509bc1f400bd64204386984fbcfc4562
7332a2c11762212544182c33e5bf6e7ee77c7d7fcc584f7431a503abbd7337d8
4d6abb2e4d96dc152b55f84d05616eb66d70e11d0dc08c222dd54f7a83a7a11a
91abdbd334b0557cf9f30311748ef1a76b76fdadf31b8171a53016f31f199da6
84db28e431c0a609fe0edb97012bf9686a62c7b6797826cedf80a6dbff2e96af
e37b6e4235dd25ad446a2719cc1eb0c4db71379135823dc1a052882fe48bb2d4
c4bcbf39003a37f294e550d9e3f503ef21842000b2d9250474456799d515f547
307d7b5684dd068ae1f5aea01a2b10c2daf1ba38edc4b218ea86db168c4195c0
6cf1a8f8dfb2c83ee324e75fe1df690f26b2a5725af3c1c5d29eacc97f278166
885f1b18449db610b8612c69be93e631b146a1e8b7fadc473dd99f57a6f53740
e9275b7a4864a8b34446265bd2affd381a462474735b2d45a66a982ecabf2926
4b5ee0effaa55f8c1c98d4fc48706597ea451cb2bc6aa9dcf67df346c12efe38
ec91a16c7a93ef493ebab53a8a0ada9c0986ba5cd1f9cc46c5cd100dee41d8f0
df278ce9b8b2387dde0aaecad0dbd3e7f8a58eeb04318f21e3cfc47fd20299a8
f83acb4759ef95d3fc4273d180a94383dc7209cd7d170a99452f8289a04b40fd
b95deb5974ff3efa6022e159c619e7982b7c3853598830b02d61c6213d68be6e
b114b7e9738b245cc325f62e82d50f58ae9fa41662cd2d88317b3daf62e1accb
2b22f984ee7ce8ae5d81c45ddc2989fa1865e971cdc1d5d7de18ecd8c6736389
3f798d7058d27ea1bd5eb47defb91a30aef3ee2ea15472e3d89f1e9242305355

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-10T15:42:38.519470+00:00
41519762699395563765363861134878969778534349489884
50783763451795393011803883345086342749606384055825
71120285115458984205671649880082801977011739352542
55224553604775366323017346356734997943418668315712
46869437655973259442572838422977260450779533256343
84590758650529021714408918034765817927383026755230
94659133652159772927930315758954518018555496200679
56430482073898122104452132970920124155755403234063
72103817164156326218141264246795811483680259229910
99191696523029530082502295854524183984883867848792
36158099093380397395093355133982526837034550969960
89742164794958253375244015731166032116946074805943
69900822341781056220934924917178170018621900432900
03737910693595346491651113941787218319785634900727
90734764976827628383881262675079750337737277194314
27698877486157220632328722139745435593025004121391
08837508527394492270326071043448761706952247830404
72470221374140468836947834115888915987500183372028
21565229884524346023165498974548397565808445231500
65865672551091772902770225025827334762213253747525
10127148535202971362750783012332922872533165888047
11438186821510790802573637731138803672456798504101
52152630446820088542322180650961349681021873092196
53031810624707311261612598480147531703162754029768
75029106686549324357850649639838016963294208796107
25335303983564743472601711730002262169829946628497
94300986697199558791015497922512032008389788625987
88750807794077765079457210787418716127404292992718
55496947622781257575415305248725269180350409842729
32734126791752797765134668566683675797865912734133

From the PIN diode (digits):

2026-05-10T15:40:55.518940+00:00
76877218761331813036490469251160366627102129920552
88539295591192934577411921513174337484729249650167
05801916525370101671921054878863861839137666991828
89248055742841105394593253556299226436047480197763
59742635748300561348849352805791159019427741300643
27300231598921344753747774623128946148686597139606
14083201380808440993927256399184190078590797260093
88367811144378878412183513268443352649589230753385
33018601692048105941390323394985888653329488241149
19485853273321197284919451005765857146593018484969
16196012825109760219955728137678531626510183186455
18063341700919689465280621838945914799306208996492
66962824432404276691459285927161448978125420974479
19418426876435940713264284668055930089003267345279
88699815506293239833376824445191102624252788791649
65037189155577068746775021438577059710820912291392
40344579223167612645715276852403171642670718732729
13654822312557663240499266091451014304069899822120
38286646507523106653377368063925307696135545533061
93608236473978968891570058554880033332320078370416
69035321714825238632063874602643169486569678243422
40654992086878623695051538786514909397587227392902
36952724685782168497440590474977706183716159876655
64399122720068796870389175562670361615914569660652
46914138759465954028527212015169287888066925709346
56456108224773628681583810560934869270971613653940
84785625107465420449433396270253685871894966152869
67311409252310536947303760756485938916629634899825
52432456838936487645979833610490107720831539369295
37463015887459642298453649236175987243343224749329

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