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-09-24T09:06:33.306796+00:00
c04a8defb04ae6b9a7b7ac0f65357b6555400e98e4a624f081f59a3160940f9f
4cc6b91c8472437dfbbdf0c99c044568a23f3b870084a8dc2e5d4a19307a28d4
47678e171c5b72ece252deafa5ec98c10543bf28f75ea9f7f41dccda022d0bc8
d8ac5d277950e82ae19ebd45424387fe6e1a5711e0cf0d1ae9c170e7fcaaec87
28ffcff08849ca10101bc86ffbecd30013fb32164df30157e8d496b7e88349ae
6120463914bcaa4ba92d1248002a9a15828c4c0a57cf2c876a1867fae9b780bf
63d6e7a15db684f578091e6bf7c08a3bece3edb63147d88c23aee77f2fcab6ad
f6d8afffb84ee251787d69b303afde3f63f805738c323bd907863e3fd4c07d2b
a44c4e62e9eae2e763dc0f8fd8eca8b8c3fc0b46df65442a7483333a24fca0cc
7fd0fc054f144601444a786976a347010e1ad6a4d2b168fff3d184bd65cf4835
3c588259fef4754d2671fab1a985558a2ef3c87d9178e9edcd2e90ad12e8e322
033111e54c9c798bbb7b161794bd9f000fb62c89ccb8aa4593ad7a3e6e0f3127
b7948ca1f1a5dc164f1d3f88265bce7d52ec66001af621cfb31820264e1fd933
4fce3b1161699d28817fcd9101c5c45a5c27f5b9f29878f68a3e45da82bc9017
2c56ca373ea388e74af1d14ad302df4eec782a531bfc80ecf46cf17c8d65c878
c17da4ee29da44ba983201589a45598843b3822e8a0e757b01ed1d8a422b721f
921c3cbb06d10752f000c541365f2773733bc60fb3c78e36793158bc49d742d2
75328e47f5b525842819e4adbe4fb3d472d91aed206b561dbd011e907dbd71bc
727a4a6920451b2366f61c055478e4b72959d39ee3fb151cb6f278ed19acdefc
87e18f26f143ce1e7e612a47d057f8634d4dc09262a62ff0d9a358458f4a906f
4d06744cf2a486f1b59fff8f21c5e35895129576dcb2347eefed1fe60e344534
c1b04349b9208c9d278069fb6a8da945ec8df3db5b246e400d95b291a5fdbc78
3d08aae15f0e607bfc3fb8c9346ae1921fcdaf7ba2e8e15926ef688427590317
0d284b6b8c80328712db1d406200dfd02e2ec3666baca8e76706f8e3e308495c
70b1d7131fbf420a415617dc31860b2cd28a92568bded25d7aa02420d08f2b21
f18c1b8ae00d99244df5d7f60c35e9068ec0ee7b85821bdc29d9469a572d9e16
47f4ba1fb80e301a082200420ed35b1861046c5ba5d51537f6131ed0e5c095d9
b63c4be1c073f3c80a5c7d3c07d09faaf5f53c9edecfd5b9e849848917a4377a
917e55bc142380973c215295d2ab00f25105d1b6d16b38e712aac4d31b989a2e
d79f2ea3e3f431c315ab6b781f4e4fe7e234e1dab35a3745e1d57ef4284a8cec
e43011b233240cf857e01997f4dedd6bd46bef7578916615bced38a5b515a7a7
800586a90754b39985b7b8364d844b73473e5e0c6c7302ecd0cc468d448fd4d2

From the PIN diode (hex format):

2026-09-24T09:01:01.505911+00:00
96a219df61dcddffc840660ec95d7d9c3e023a9b57c2715ba9e5cbd785a02e78
73a599430a5951dfd2d9056f09d5f0196a9e95a95768f8935a9389cef8f858bf
db1e630e89f2ffdb5cdd0cb9c8e4125bc60f4c5ac99f073baaf21686eaf1e317
07d65f5be896c9ec5c20b100ecb470fbd36908a3c9d74348302cb787b94427bc
878aa7d5823e8d52aed62c08167714bdd0a28b89e8620d55deccb3a96baa825b
5ff621120afcbd6dce551e8ef2533253be5d8ee97bf786c26dc12bf78d22fa20
a0d54dafde01ca6315599dbafa95d603afbfd4be209c4ac9d0759fce9d1a745e
181f6d2f6f62c3c09c518a59cb7dba095887bb84f17315d0bf2302ec0d7a50ab
3c67f8f42148e4bc36eca413ffe225fed6461bd73fdede92450f327fb499e6ea
f6b1211c37d1255ed6c1ef897c3df5b8e3daae8073ae8ab8409b387ba0651494
7ba18fde275a48fb6308a22b3f37db07cffa28ab76dbfdecf816a7bf597b354d
3389ba81ca72eec68ae78dd1edaa3c2847f239b1daf89f8a9434caa0e5e73079
970e5aac1e3cd622f3875cf5caf7f4a8a485d72175a1572d9947fbe811df77de
06cffc95b9477b255ff3556576fc7abf18b09c32f251ff9e25aa848f9f882475
ede608c05a9dfa631f9e962e0ca4992624b45982dea50df25b983555372a6a96
b3256850bcadc2d7fe7d85259f58078d13ca45f2ec876ae6a05d58a5118ecb31
8bfed4b82fa07fa8c6adb503a8c9b013b061393ab9812ac85f033be727df23f9
f07209f0fa3febb713230e30bb58bffa9217e600e52a8c4c91c08b6a6621ff60
a3183d36550b3304fb92e2e259b70ce09210ca6c719104ddc0c1dbfd1f2274bc
e14599bcec71578fd88331b1f1eecd68ea4c2a5cd9f422a0df8de1d0c099e5f9
0535eb1a6eac999ac6e11b9df74b185b5e6f2d932a7cb9b5bbd97858b4d4dec2
d31161b2058deba55ff1b2ac88ce02815f2194fcf8ae530231d7fc29d0336031
a474ff188ac093947875a3b9f185516785ce4143c952915e0a308b9cdacf6250
d2efe1435bf0e2dc9dc72d5f92cb488f2569f8ada81a2dbe2d6f23b4dd078b9e
03215e07ea5854fa8dfbbd4b79f8e9030dc296bbcb32bd83d04144c1ea3619b9
a69676a217f076f35d03619fa9d6d41fcb96ebbb2c2ba090c124afe5a4bf6e8e
c9040ba9f2d82bdfbc8e9b4f9e95de9eb8c0a206b6396773da6f0fbc9d981820
721cc92be8d7d8d16dc0302d49c8c3c8eb501dac3846301ef70bfc88bfde4b06
dc75c87f3654775c1f343fe3e8679e23ea22a36557d936153580aea6d660e8ef
f029770eddd7d4152c4c5bedc256ddc8c1efcc5bea8ce12152a55d2b4e023d75
7eac3d906281fabefa73e576a16b446a948e9dc35bc27710780f4da2743ca669
c10fd7d3f58205fb7e19f1e86c5d54297db5214094281bd973f46e24ed61687d

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-09-24T09:06:33.306796+00:00
92744176748567837215015323018564145266362954499648
15597698852832146725895604690462635935003268469374
25482240710342232891148275655293056791409469290245
11729339218042588969666735102687171326931270354036
73161627110019502277018750833173749732705720887075
69451872004254213040761087443506240383289199619382
32200930079238598249714035742747827375847881202505
79037563990515405059073462639225436476789899154368
84951170016842163151583660270579207001687420051863
71011426647704328901725360883089177738137769338538
46254520464473183403491776562139872322234889590015
82443784706947732262101549398348406165227929633638
91258202002633792432387831517959179705574029274501
97969092398552203862693088442344865562633674740278
20428327280824410120932564416886525001885469893667
79304638141723012938664314314628608706078200976554
95391515599815799942542149888873661750427181373240
25739079791426320786298901304425891388142274053269
27350228058420834189582128822025723543386730269742
71879977779246986647638869437444117706167664348159
43339788491849187852263114526952937667738532405739
28050641696941913610641349784565882061087095149623
63845206463175236289380432398903231340750740285035
18296498004646950207726803060873921277193191661065
86234934114438468639932260363243433340273813533677
12530642922333302741705487455822718631841448260834
00661491249704089165215519309249826075921510922560
07597060588573323723645522452685882035285160338249
71008105820756187096275254465946634995217107203178
79527990556926407440481778513612872551070717204502

From the PIN diode (digits):

2026-09-24T09:01:01.505911+00:00
50622597640214932556620258558794139169336046201565
53671089810511092506584969870447904737889130991437
92128518919815769059075970223423079591509232770080
12050863677248448335856839883538673062418274440822
19208962393798138579690770309195331810890985304283
50839093422334940993434134326077750199218957864903
75919032567417595726169424310947119895925681388925
86098835873215219135021322807160033372885464193770
27634669155027805377332855379493372461847428157438
84645556236001204823614339907299086243635507407118
22679189235377513786291498384170604071577759384852
60482151149072306034359268643333176187455371171906
49857123379585011822912476565081583770324359363617
08929057993158504612645338368089306513915253855542
06507937048088739425333759880741196935066093886517
42493984476027689873810368761976975758852942950359
39351409638319351448878891462300424076459239060233
96632461548511510446898312461608134504929331341688
69538813874331497704764292346041925305532610725354
98275775249194114547422485818720888094179778054165
95787236022995334874830249415196496416243892474820
17638533810333656782459410483956988067915799459546
72433705736826459045113580073958033394078884418975
21031394508750893165689354258566501862231893039759
69315087444360449336756491104204116943884255795849
58849262068257031511158857522432142843099248457395
80297256704830113691750617275484199231526303583534
63018754215328746696411914214476919486939140338265
93437802611726726144982990151861076806484257959194
19162015776216606605931530052625089384412581336448

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