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-10-22T14:46:02.442665+00:00
9aea3e0b7e57bfe60da6a4b4d58406fc801b7d49fff0c84a18f62ced775d3f14
d51e5356ea53b89207840a19f2b9a545b140a22ebbb648b9ce40d36be4a63ea9
65ad3a44759e8edeaf52658fe40a690fb82d61f74e9e3191cf66fdd77e41e994
d1828f9afa9e5dbbb7e640b16e9d0f0f43370baa8a741dbde3963c2f695a7a19
49f7b99108c3ecb9062116ebd25d7697863ad4a16cbe6e488ed6de8ae22e2e25
15cccb596e3a1247efeeffc3f91f557e3885f616a6e25e31855b35f5cac72ade
dc4f683ee3195ba0e2d221ed539ebd8de9ec47fb7346613b6e9f18590fd9b82c
79dcb7c1a7703e04943e7c834c45212afa1a67f139fdcb63b859eb8ed1a6e3c1
224e66572b048098549148d2ba0427db042f75cc0a2845633071c3bc93aa7215
be8498bb95be6e7e3936dcf4e65cd46ba7d1b77352112b06d7f40736a435f61d
54bee2ba5e81799190267da355c3f8e6b34ce2a98de395906a41461eaf583b06
a0384aee6133f67207614d2c4ef59482ddaf99330dd864e45829a9d5ad5ad875
9b761d1726b7cf002c34a5859f92e4a177f6e68452f5dc277ee361ac2fe50ea3
3c61fb3a725fb9604e48cbc560fce199537bb8b1a31026a2143c8a22074e2c61
43d6f660241c87a25f50a3a33a34a5f36f6c9ea7410a27855f86467d0a2dab9c
04ec278765102b3e7fd59a962a6eebda5b33a1917789ec8c90d249bf6804c3cb
5b3635ebe72a0dc1cf0403f0a0eaed9eed6c5d506affac72d4a372b951841498
b87224b2b55ce223286c696b59f3d1c336dac8f29aa81eda5eb6f551bdd2a630
42ee1a96bb22d488b1eecc6c2a6bd2b13687c36081552210550d10143525a214
21152814d786b31c2f3eec0b642dcc14544d6667586a9166e13a4a820df285d9
2dc8c120d03d6bff5d51078bfb01d702b1684654022c2be6b3195514622dcecd
18e8f2e2605444719183b235c60537da086da597ac9059f205ee1f7913cbebda
d8d496beeae07e46cf6d45b66dbf51f1b210d54014eb11ea157b50f3fce87ddc
a5ff673b4781c2a2fb43e392b386861f10eb1e94ed7b24799a78ea349dfda6d7
b815f7804cbdf2f6aeb269cdc9c6d95cbdbbbb63003a8057fdf1176e05aae0e3
4c68239fc9370d4533c6091b5f01c6d7f925a5139f7d35864b16deda79cbed79
df675fe00e126de4515e7fba1162b1187f07296a83fa9da266b0b3686eeaf96e
3ffe46d13720a1dd402246c8973d03d48d6d540d6d3a90e1a52792671a5759ee
39d61fd9bcc3c83ab57c92c927c86853f6cf74d82da629c397471fb2a526bc02
234edd45bf2967b171c22df0f3c5d0c5e66679b934353b5862e92df02f55bf74
6b729b72f955d783df51448bdd6d2d98ff1ccef1bac0c29f8de3f9bf15669d41
1d6a092b9124bcab52cb3cd68528804d7b46d9bc6913b477c2e397d0c4d13917

From the PIN diode (hex format):

2026-10-22T14:41:43.642850+00:00
789f9c3dcae61746de69cf5885f03be473d88d17d272e7d997714022794b0f3f
53b8ed5f4f95af98e106b6c8eb1cca8f3f3fb8f76e233af08e8e6e56aed72f71
53aef978dea26fc03e85e77eb13ba64878acd0e00c2515860a7d41f0aa91b37a
e27918e03192e6f2b3e3c33876976a0e3926d6a9265a3652c6e405119ead33dc
7e74d7cd8d63e2f0496c686cdb9a6cf1f545322e5d7cc79e6a6f38828bfeb8c2
6c22011aac3e0077e0fb2e2581c653776b2a84682302862ecc632b06d857a12b
3bf91913ac053665003f93ddd338b56ec936e8d362ff1d125ee59d7031f8f259
e64818c1309a6e76c46785e35e7dcc6ddfa504ab9cee9905f27d6d9d20602951
83010070aba4c2d95f9925e71349bdd0b8ca321650e6bebb7e91e682219330e6
f2eb889c50cb0f51527720f40293944e3abb950fb1d911f2c26ce6743a9766d7
4171fe480f239d6b3128461ce7004b311e9fcb11677a39f78a7fa18cc9308903
8b15ff79a59cc08ccae6eae12872caa945126d790d1945a82059256c9a969513
664a0bec0048beeea4b5079ddc82ab09fbf2cbced0e057ef8a0393d324795cc5
9190c2fdf7bbf8b1849afd837da2c2ecb38a03f7ea071877837fcb44ac407d68
4e682c83358e9afaf2b121eb1b8e58e157ee218d9a50727de795d20d0d240210
134ef402d060a4345e9f2fdfffbb35a1aa1bfad90e06480de49ad10e0b9f4438
4f54b188b421f430fbca7e0330ecb7aea594b6b668c2eafe095ea16d2592950b
2ec22047a3b1d378a61a2849a360e7313873df2ab0d9f09c753b6b4e693887ac
1803f86f6881580fd49b4f9c097c7faa04a740adf758cc31fab5b77adcf1c57d
927f8fea87629b4e37ee73542f97205c6269c3b5ef4666dea0e7513df2fc220b
7f4d46ca62c9d77d90ae46a55e1af3144ad8fa86c035a244d05bf73023b661ec
1e2a8e561818fa39a1911e77eb2b9abc95df5ad045675372a06248069a970f21
86055d55d199cf20abb9df5f50d12c16670d29243215b4aa685a0fe53a051121
ae639d28d075bb9a36f5eeb3cdb9818b306c12e7f76dc65b21bc5f0766ac2c0e
8d644636ed6caf73ed109657913cdfb81e35054caab957a018750f3f8cc0907b
9fe9d25a222932bcab0d0ab1da55ea9423985ff6d90f51aea157ec2db29c6b9a
4e4620718ad47ffd59d365b4d8b3f69b9c9bdef02a2ce358d6e6307ed8af1d7a
ba3fe3e5132fdbaa400024c20fcc9da02b38fbbf2323ab9536869fdcf99a98d5
3e65e18415d780e152e13ec05f5e6e4ce5d3c6299ed793baab8a37f7fb65368d
7c34335f71db3bcc4635697cc86111579329cf7670cf4644d0a2e35bd8836149
c1cd5e1f7414908ce0cbb4ad100476fb67bf8602d558c9841272247808c0fa07
4078cf8516c27d072b62457f5bdde2837dcf49ac3c2f079c8cd1ad1f6cedd29e

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-10-22T14:46:02.442665+00:00
54621126879113666480320628272573742444199363203083
86838446073210258565697764624687827285640766626901
73586817584275820143100515844597785849450226654830
43545893878364771057151567551170381629895060470590
22257385450895850633229318513458610890107242384646
37218910581871953185265633226694493391539942790462
25916033835889417115709759105924891584442183936712
62044862243176693342260357998489426693347802874304
28528445728604390447171040699948139588477014219032
52874990102657549207678315821743060754645329849086
94292145443825638595797669414944066570307588590660
56749751140797774478483075535113008841697390175518
29233883004452653359466119328239269772471463609758
14958596787297965383238477631638622060383407784497
67963628356295806363585265110858676510393395347025
10457156043935011643622754504210915161451937404473
91040495915453421393040360580893800672146314858132
20528414367881923540080507899554546830948281896648
66265087343677084207775435959629853416851316205337
62203321402034792847621100452084770203880645025874
30133345933261079381073901027704708402444379258520
98452496846813453178539805550809655172448905312119
50902670096982099181781664201721238025650359712994
62674679343431163048233621542052576684212876897478
05989289878799005828872310057076043559551369519809
27950198376519592553347522212103951418098194278617
98772427074106315762027679041010637055326164347051
61034109841309584465394603268789573188955881244639
04831645664195517131786538880235786991410377139445
97970221855253598898454785911607145514853181683909

From the PIN diode (digits):

2026-10-22T14:41:43.642850+00:00
20595661237005883359154123145113643421751563838495
79497552068228436363841035584242108674471383742062
11926233267759667220721237213410256570457922212449
46799556185106145738693890548298051758735126164199
73080408540869504693249958061156303984940834012672
62001946372998831907423204350234469943068761435925
19720554010063475681105498291894571249897224934854
10189603339425096504715653052509573296418131010012
71649495533719738984502280908726453033474836568015
81821932024748785887491577179408165851026513721535
57074940702800754930591703225738276140483703392121
65569240401469691809211325696832893708545049190274
11007290648107573071098738034736219297454494877732
54312562947938030724193127687264250478044431534254
77332742888733415480142549131336021619780296645294
59478753617027140672135414115968567984773680334826
03488374654882820494099461093746491146943271637720
66264073639649561542765617590778055635722403110429
88155579560924277004676473884981832297254627433598
55785515844751329298059581700260816134112777709825
44747065942620743492536268914835829730424286242457
61453019435488499069038314609872065451153334059385
53327185958044220313413650218070049015580517337499
57401787545479852939480818099891338895070272441441
00705408751516508745608430530576708587602417156340
92442359903441508871131077854835529515817461874578
56075478703213382789018079555655424488482675292286
63194770640036941557604356913535714954345954526201
32212882629295941076984158478671385501544124525195
13597053052497178747411812706862913197739394311620

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