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-01T10:49:42.034064+00:00
2dd26656a34dba30e665ff6e4f53ba01e0891622f33825437575f02143f32c3e
a09ac2b8e824cb7efce8387c3d92974fc4eabd174b5a240ec6a148a13b7147b6
9b9b7215371663e83b15fd6e2ec314329181a0fdbcf92c78de613a88ba5a9c66
e9eddc6239fa3d353aaa5fe47ef4773ae2e771029740d7819545930a356b9157
4a8620e133f3de60929ffaa5dbc9ac044ae7aab548908a5efb8e2ab9d3bb785b
7553826bd3b15bdddf3f765dfc36cc6a2cd00b5629af8cc1a939be49c0156a20
140c683ab11bbb67073b6abc1d0231fc392cfebc32cc6937b04bbdf930f638ac
4861b02649efc5c82ed5018c5d90d123b1721f40822c1e06794a6f2cb44c6430
c9aa7564dd7c61f023c62491a2cdaa01c79a4bcb05779f99f52785f4b7e8c405
5d085aa0d8305e8f9fdd31791ee29efabc806db8303f13f2aaf6e0bb4aa9251b
36b9c987e30f45b215cd56ed07308a1ced8829f836770ee83765158c96075fff
e7b652e9216c442aeaccf1b0cd97fc8c3c59738f78c845f2a9ef7af335513c26
0b08b5e499fd9e0d35243776d36e0b91e1b4996266faa32ac104f0c79fd82f9d
ab5596265b42f3a485bbcb442c912179410421c3931d737d0a6b4654be72a37d
d4680e3fd2555e5d83d997d8fa8e1f0c61e9f7a364c11e105d9a4617c0775657
8d604c9df317434a086ddbf09dbaa1f55b15c47d0252a2dce53002d421909cf7
8005f09199b7662fbaf03bd013740cc635fadebfc3f05dfdc9d17933b89fd7bd
882c418fa597ec136600498a5edfa0cec039b47da5a316940dfb8ffb0d8a9982
613f6e4e8eb94221da00f1c28dc42519e2a06a3bea468e31970e87149c046088
aff460bf3364d2036c666db6246a9b1699ac35e2d7c8d6cd35841ccfeb11ac09
691c4312475ee3fef7eb43b849062e6cb6618c78f4ec7ace9fe8adbac0706046
e220a718ccf41e5af3893724978e4f6b9275b84fbbba7527ca863b88a4077308
eb58d1e72bc0903bc9e5908ab7e5fadeae3468c003ed7e08a3b9bacfd1562401
c9001bca7725304b7830cd4099064cf46d105c613ebef30eb6a2841b86a6a88d
a348d77c2771138cf42ef74a6f2795be2362828a0fd49f94103cbc401d056c1c
5fb9292b57459658b809a770a2c091daa572f038fca63d89706c55db28b5048a
7c0e71814b301d7443365c0a54fc7cf1724ccf46f437f49c6910c3120651eb10
21dd1302d1eec41a4f95476fa35ed8f01f1d51915441bd7730cbeed8148c570b
2f1159924ac10a1c6695042cffdbc4f8ea85aa8655befbc182633ba3b36218a1
de036998431673a0bf2782220bfb56fba37115b4e87338d6ac1a75545f5bb1bf
ad71329a99c26fa9b2b9616a4f020ba449879ee85dbb4eea09c10f7cfb444c7f
d70d30f3324daee2e2aa64ba4f7245ad09123f385e6fc9ac9f519e46fafba73f

From the PIN diode (hex format):

2026-10-01T10:46:27.031179+00:00
f333475fbeb0150440db6aaaa54af21536ee353ecef68477b65e47185214d840
0f34334ba3d44df9b267fde14cff68425928044d41a96ec7c5ac1866aefac5f7
67a290734d2ee911430d114ba80d2630d11adc5ea74dad13a5aec73cf1ab4f3e
91449c5fe1ef5816044f2375860dc2391a9d3f0bc95e784cec39d83e5062dd7c
c3c0a07a3b7891b7eb4c79f27fd800010f1a8544e7565b9a36cca12e7d1c9121
b781f2088a0989da640c8dacce7944690eccc9ad1b60067ad3a6aa6aee966f26
b79f1eb0442360cab9a4ee7917fea0360ff58fd79f1b140c1468d0f4e3ff0c8f
ca74e3a2d52d110e15f1ac2f595f7732be43c39abf72e46a7235c8e931bd9484
5e3c58acdcd2cc70aaff8cec8f7d69f1a61b797c49c642a398a8d303101a56b5
418cff9d745f2ef1ff83e3d293bfe6f77745958640e5dc916ab6b3630f5846e5
42ea199e0d8e127a940be053d7dca11386e492635620b5327b41bff7093557b8
86b177f40895f459e0ccfdeaa9181ca56c512fde2959980b36ae95217fa0976a
118226f2183737d52359ffe09a99557d6b9867afc26b13970a65e2a6451517d3
66e797281b43cd38d0c97591be025706a96baa811d016cedb3838a0396222396
26253d67b8950f6e53d0acdab561d52ae256f358acd19e67a3ed85605e7f7436
841cc858be2f6a448ea12250780de6c2dd0a2c73b7542d795504f71cd3a9c6e8
dedd63e1cefd5cb6352d6e319295d3fdb36fc8c0f8fceec1edefe6c1eeb066ea
12b528bb70e0e072788f867020b42c2c5cb4edfbd8ae82e7991541453c73049d
2258126cd8aaab8e72f682ffad1be7247da66ee8e3b049ec44b23c40c7685ab3
d70dd7bdf4dfa2861f12bf44c183b3fcc99df8f42ab049f5a94ae149132b3854
f74a70f355e817b27f22e911852b8d1403cabc5da1f05e3b440380f5349743ee
f48d29e9ed7d19ccd5ae407b68b69b5e7bd91b3d2ebad80adedd71771329508a
e9c72a4ef8018352a4a276713deb663ea6b8fcdacf75c7a6a9a446cefcdf2c28
14e3aa38365cc8f8b09d8710c9bb5e0dde129910bdfb668287272b819f18c020
0e480765658e0bf202fb87506ed31fbe4711ee809d1ef568a4b1fc7e5b0be89b
85aea1c06c50e0c4c28d6a04847150f102122edb8a3ce520208ef1e93203e786
b30689408efe29e838577b39f1016c401a4da43321d29050e3d5e1a71b40c425
4b77845b92a5beaad99fb9cf49b93cac7d5519d279b269e6b5ef994f20e4ecc1
09d3256455a28be8716ef530b53c9155db049e20d116631e545f9f74f82720aa
d224355d51384b6f667ae08e4ba447b5f85ba31c577b9320a8cbf838f5324e2a
6635eb933650ce1a0b798e3fb75f0ff879023a33968319d0e14c4f9447fb6207
66266ad454fc17be5d97101786632ddc698c3fd0c70d45e20ed96763bf0e0296

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-01T10:49:42.034064+00:00
45028663778648011079838601372234563767171733674462
60549484362656246146517996892375903614986172615913
71825555142155229959211046952050452960884420975836
86905602985761535870952619581302516429496947105307
45877434325196465965720474708172443894424285872091
17833007779163189354064411864175409369579073922106
32201204587727870307590688290249574488500555767589
48567272977638739746014093443577143164304430062174
11448076004870170024973598364562700199547505195953
39338396059308906048944359492130588828098448631970
87746937275485351569782186074838283641541914550121
40500795828233086842765140608915432069692253816038
11088153581353365518101145805398026342930499594757
71855038916664338768444533216504339547291525100770
84901463250414638594933151423112976300933016935470
23921986874196765723677408095786619121962502826248
02334456280545538302478659191612985391959321518459
89364465436551190200733894609257802565632248134313
38533097631078428566330094419637256006597042495114
35205604963675969151000308020982360655225372535332
28177209052867187194678473064608829740202259738692
12967032672430903755365142790746178479878617393459
36640715088843924459443883745204920326086385868636
01002719374875204864530676091692976290148262322734
66684163722439131940467411394990359830381559481660
88642905082895854143876950888409671262924565145666
61371208854081043824141329754829166754921084241476
70555605169518068116331902962679497111639431298145
84658919482040871147178946749310280249044496337034
85909330995963799824610305526722156091393034118663

From the PIN diode (digits):

2026-10-01T10:46:27.031179+00:00
51719590762104640670657421545362321982947124822064
15525175637778037604668940047765691099977224027497
03624415774617671317756813384826946777731965749960
71796245685695882204793517341394572657631194207657
62809824959260225920458376212700011526336886915454
61462528453383290838093700124172216805147327960622
66700650113883593076683596856421236054154359272012
20041243166245171421724789951950906795549114061453
49894832946088721270404325056627212473986663526803
16268681654057169546314791196949346445068279991588
70662558134218224811836119344699863281502365910953
87843477190849896924286508814741895211547449332760
51061730382455553589545385250752037594071951100166
69212302514027675617459002870669077029290108793138
03503435503837610384491510837281974286887258036333
96942716543228889047066842613480201394104415838445
21850428699899928253451049464979119293937602188140
87121420433412328044449280743053216569601504573488
18087071421430732736256610767368786064990490791389
62343118916893317957427673697473194356847412852378
27341733434120038893619459680328525167414125257464
23048255942327614686101319194180389942780131826462
18136102626684179966696470444020705654927657351687
94131853168902303539432959249232147207010142110235
80103190711728573004647726911155337461920880969441
06043213800218463860323242500334790637644241568723
57010864267764513344806727649637751932914665907059
85738560722585252178058153793293093700856239131048
81604585045832229930849559163932703653938156751102
22427564718191632887234732685650784202534754802611

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