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-07T20:35:00.292164+00:00
f9996bc27deaa1f569fd5c406866b8886dc4f5fa18dd48381abe601b766195cf
f64fc9edac6168b0899c2e8627ed63d5244ff35d186bd859a5a0826d19e3334a
143dda50e32256b55a3afaf5046363c671888594a94625f949e190d6cf953c73
512e736ac08e34ac7f5eff5c43b781a1eac5dc01efb1da1f50e35f636a59830c
6672faf94330927a17aa168d6892dca9d16dc3ac467c1b7a4beb940af962eb0d
97102a2765c23ee6a391d017ccd81554ddaf3c8a3e709c466aa232a9f54f6841
601602ca9eb6b575c801ba909f36b742f4fea6ab4da84243c5ab5c968f34be99
56ae5e673ebc948ae75eab48ba5284f7159f737971eb77f78ad90e0dd27dd0ff
f71f21732316e47da2a31ac44d4c643dfc567ee4d68f71fba2d09fe2ce81b503
d5ab750a18076f706150dce6bbf4b3cedb7a16e2280dfab2f42500f2a5b6fac6
9518d2a8487f0ac49510a3d5620f5eca80271afb925822210d4d26fb2fb8f6ea
1e01c866720769ae6fc3f9ab0bc6f108eba8238a528dd0b68c7d3366175d3e0c
3fa04836dd758a26f2a6a58e27221ae19e94472c069ccad55161aa800206aba3
0905ffaf2d28307e2e80aa2e5a90fec4664cc98b7c99ecaa14068327b6834c4c
8311449c39e7999ea7ca3c53dec31a8c6246aa7c557624d583cd3f7fab903f51
8097b733397b93af73a578abdb0a4584016ed261ee0f3002c62bf070e7ed58e3
96b24e0f2bd2723871b46cb5c88799c98a0fa4ad00c47b510f320781d3d7ae82
4c70f9960df9eb143b4fcc28afca494f4411e5d4dc9def9326a596fd109eb484
6d51e396df2fc0bcd852d228a1caee78825f0436a5317b7ffcf1ebdd3488a12e
37e15a9d62045f81ace5f0700fe7120c99a46c5a262b9d8fbc2c1094ab604320
111d4b6cba5fc7adeabedaa7255a686c16bd5f4ca1cbb9dd3164a5718bac6ad5
76484a7f6a0421f718e05257bd3cf2841a0de63496418c8f11d11ca9e16ae073
37e374c6b6d345a70a40a2ac054ea1174d6f85fa4d4d557488fec8a0441b3d0a
a7e998d405563e0f3412b4dc607375f3583a897b1bbe8326f57061bbc1c6a66e
bfdf6b2391fee643bf6fd8edef7cc55c9ad16a0815d5cef49ab5f9b5626f11f7
ab4ef193e5d10fe4bae7f90cfbd3507634052ddd37dd4cc286c2f3d331cc3137
cbb988a9cb980c1a3fec659a44b0032848731da6eac82309a24f25ecc02e2e02
556ed36d5a7d529a02ae62ce2e3c412bd48b15ac66818eddc145dfae928386ba
cb53024d530fd964866a36471cbcaa43b98b3757fce3856362ea8f212a5f78c8
67a0175deb1c7d88ccd83d1596a57c3e5e798100750895c3df4001550f2276ab
57655e9ec43ad9e6e0c4dd0ff2ff202457a6a87c6df14d4cee93c015148bde9b
c4c69fd4152d0084f52cc9f3345f6674f2652bd5f1f4063a0d4735fd0ff99d28

From the PIN diode (hex format):

2026-05-07T20:28:07.088609+00:00
82931dc046bd411ebbad4c31ceeb2a8a2dd7a355836a9f7bcafc929f8375c90a
04b5eb8155b5f0b9c18defb2a4aa1fa0143cbf6a417c362b14617263c866bd47
737ff2ec8e60bb705a52bed14aa92a031e4c1665dd46268d660b664d02041ba9
c8b1d32d2a5cc4018a33d8b6ec72ee9018e609b95ff671ef31121bac846ec64b
b1e025a5e791bff814ed45fe2a95834b04108445cfdf7eada1ed2e70fbc481c2
55c51882342e56b2cafda1e02d85794d3d3b152fb2e3c7b65dbbdad754627b29
661a79ad804ea6f507baa457c6bc46a9aea0bd0fcb155f49cb047396cd626f1a
729c2b55428df60fb7e02f35f6d4a23659cf7c324efb1162588315e716dbb661
e000cc33ecd280b434257c4b074b40249b61b40a8cf88b4f88f55134b74a34c7
3d9de713ad07e929873a369875272fb918283eb9cc5e3bd7bff724684eb8338a
db8dfb44106029b751915debb8c1f3329d623288405e924a3eafef26a21db8ef
b7c3be1e37771bc0845dc3cb87a6436f3c3040ca0d065ffaeb5f7eb15287f3ec
fac2807ef0b09408f30686ae983a088e358d21200c98e19389aaf49f4ce6fd5b
e28d3724e82115f3d29b18f221f777e028dcf8f75c843b637b3c244f2aaf9872
a69de34d36ee496dadc8a2e868e93444ddb0e5cd0fc35bcedbfc991ba767df7a
55e4458bc99c56f45606e6f2057cd7091f0e3968ad9fbddbf619dd7c929ab4b8
244df45a54035606cf07f60c768f2ec5e665798b6d75a4a3fbf8de9d70f97a7e
ff953ac37f4bbd461525c70c3c4d4dd40e135297d7174841174d6c97c28ef1cc
c0d1055017584e4a2b667cd2e5c41810b1eb2d36b7e05c0749c2fec37ef67128
c6eaab96cfed8840102c5e6fc649a9fbcbc68946a04c6a35a2c62b4c5c66b920
7df581179cd048c9d03187287979ae76d1d7fc1d49794d5b114c884697b14ec7
a7f489490a4af15cf05c99522d6ac056c0311606d31eaece65c1d791d6117d21
223e5ca7b9d3d97989ead91594a4ed234f4c9d9b6ea38bc6627b76ca7682f59a
76b958e8c668c4cd1879f73028eec4b3edbf092eb71d2f61ec0134a3162bf3d3
f7a1c6dcd770907ae317eba4e82ea39230b73aef59ec4618e8655e143c6eb388
45332cb733bd209d5c0df8b51e71f83d46f6f7c917656c4e465403b3661ccfd8
d2050b42d748d7860a5dbfd13af12a117e26e281d08ec2dd375f8f6f63e0fee0
59afcd0b1954448977eb871c09b03e859e65a24ca97f4a258ce5c335c6d52f39
4ba8b8e6f6fa156851f12fd87baf3d224e9fa71bd430701260d416b84b64ae05
9c16a987444511d56224e73d9084278473267d5b8a6ff5bbfd574181cd358048
a1c0f3d5d59a0b9b7faa983805081c12d95dcb36b095e77a02f5e160f8ee3eb2
e9a546b1c15b691250fb3c2918e3d92ba67421824a154b77b27618f600c8294e

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-07T20:35:00.292164+00:00
53079425610592640402843609962472562690962718974979
72970476375646343999367993240789656030092551742061
80348681905804999998133633486970377344496015814615
06924252722794926783296197017731809599068931120214
67484622237022410446690995727024272275481098135116
42390194626345232184756038621256700662506979046596
22025882811701864459548366667177686667977192504352
90538674940362884838947172868232215915211319381413
25313315352225626326967776006186264313625929810371
17102407111297808779222240137837006582984924687227
10964916639815942839264688343313773847843001021407
05741195711198086835388241824025510223936212636072
54173838666542393426584871440656819770280206716309
05754540482646287046904496027639245370200631398231
76763117685657535867608395264098707024851836316327
71446381285183515723477515652071106932011097154802
98431288507878154314561380088135533815647300962381
15500729743076125013205979407573796817574738655016
58803209815047928882406120309504546549232752366146
55905798049529721215181253640890384357438844164871
96673217297508869599739067379004082289957661854900
65133972061872742706043324828789603226135250654043
17286906155516988269671064627205786123771133777785
16366068276110675205866215521880961517885837232790
31381297879398661091073545679111249792540608215481
81981117717847158612801852054555769434944949558536
69521226630154687603407215296635096279379246460285
10099025825402749846606543392172022942936974463134
86830277831500340654712888706785395587339998433342
95200360239328253661215065246294212900170849956401

From the PIN diode (digits):

2026-05-07T20:28:07.088609+00:00
30472992708965308773764942384563853106592346593117
10048129858185934178647031602060910665245443209714
99028971152742968712908290746942033076220170384102
11027702042769774542929601385182144424098595134918
27723210987577376545912069424931750416326926736146
12962994859724305246867861453321776159214778998293
87849823410226217328786607866487988870697460891521
95730415509811261456438566411583475362548924507817
98883121228297005128805237247507756436559780104039
79368152837452996157197307413558545217394785244062
85945991360478845138416816964183814593849350579850
36649446746275386229848395903055192792329395356667
11604864130695952677823594282676480806347452580842
53413332125247377059769141553633215524331940923259
99236036794275521466577754730973620452687615959153
27670322856939568686060524093114570473598925244654
80843677908403860607121843469701213909176463571222
26495895277589702137991260777714198251237265237708
51944292058023887874430224962416774554839207739495
26134098715036641644941198736998377060760653629843
76920285322529235672493540212174182973217791177636
70517778996737731074929253824506928692492206307401
93451725333462926785213721486435797657551063399898
23181830541885889804962421484096799109468329479701
52632243619812442223644663464883588970240194206010
79366951448351893257921381301361702301087870840379
02280511667234109391584217263829429455954311998975
11258468371935280976623358016276692774374095539847
57756884210481472375613478596727481218962284750074
05562269356869179836614432393215382591381187876529

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