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):

2025-09-06T17:18:08.799764+00:00
c6e65cccae85b8b694726f010b41f28920f80ab98e1fbefdd9b0983c002e4e6f
f15fb7077cbde8d8c3380815894773617bab2dd460c852d19b9a3af1cd75e67e
0726d466ac143bc236e96ab49ce19e69fb552a8ebde67065eec30d3af96c01cc
e8bd0b51adef677e9e48a02d5b2e3a15aa326fb27973272c231ecb49e758adcc
721e79fa9e4a91cb4aac831a486dbd00eafaf788f4c993774eb37d0aeba272f6
355dcc5f9eb7c0375babd0cdb7aadbcc44a3e70fe6507df48f1cb4fab4780641
bbcb44ea39a645421bf1df49536560122935a1967a3fc839662b1ef2b1153026
fa1ea5a6ed17384aab0e083a9796d5b65a3ff10986fd559dca9d9c4ecf4e77a9
cf4d0d561de4f75536f60055a0fbb4230c21f86c74ee190d80426860ec167aad
554721068370aa5bce59ba1cff83a1bc7a9a6e9822151b215a75a1f783362cf4
cdf51bc7b5d442f821e5593e7e2abeaeecb40ac1c0e316fe88e8c64339d5f3e0
66ad57d1abca734faa43b02847e7f9163a541175130a3f54625fe37c74f47d44
8fb72fee7e06140ec2cb27c926cefd03acefe195df2bc4421d3cabe0cfda2803
ed5aba9fe140b3ecfd8228331066a5db7605702684a1d03b008f8cc5c6525348
f4873c20d71020a28eb7ddf6222c413c6d45eb7a5bc43e3728d8f7d09ce11ebe
21bac8151b0023e3d6a3a50a9a04e5a463ce331db024636ac404e9646a5703b9
3992039bd0a5d0c0707414e0c719b518ae86490e2d05a69c00e99432b7b196cc
0b0beb4112ca39d237048132cc852208c0c4ef8febf53e67508fb7d4aa2230c8
bb13f24077fa47a98b6726b616d67b0ba4cdc0cdceab8bed5224cf24b3d33110
1e6a60bece6d25f414b35f89976b09c8b656c268fc10a9f56bf383af6b307b97
a668c76b6b6c4bf2ccc59e9bbe35f1bb6bfd50967134abe48d28160409a225f0
fb61d8b16d50a69f83321d78dfb08a824a29b16a92f32f780ee413ec4c836d7e
4101f9d091bd4f6c42195507dcaafff1e4d056aec90bdaf72d881557fbcc2998
6c0fb8d37f21a5ea5fe2f3a677e145fe8a93af368a7bcd21998e561f1ae1b32e
50f32310021d152f0f6316453662f50185d95c4f3f8dd2274e2e084a9cc7bc94
800e0c1de681323d836fd3031b7772541c5fa793666177ba3a6986240c618874
67f2bb9158c8cfa46e5c340ba907ced7fd352e440d6afb24adf1b62bc05ef0fe
2783b51c6ee75a7e98a7efe9373125e07d4d358ed56897a503547e44456426b5
28931598e829cda300e8e79360469b90d4b2afd865fb9f6600c414484266cc38
ca1c98740fb65efeb5f594e4825f09c0375f50a3ce04760f1047809aa6d21097
8d85ec1f691c8248a8fc1d616e8f880d08e72324497b9403f12c8d9626490655
84991ed0ca4e6437d537c30ebd081af5867773524b056e8f6e0f038bb2a29047

From the PIN diode (hex format):

2026-01-16T02:35:17.968181+00:00
1fc8a566c2e185f5a1a20acd402903cb5764712c1870bf22d1eb4385e36171fc
8389fbe29f7d093cbfe5d98a3c8382f7a3aeb841f2e1275fd4cbb40a1f9dc649
d04e645e7cfa997e86e847c621292fa1ef6932bf60390b599464f5df3a588458
13fe2eff47739b827165fdfb748b370c4aa1fb3d937e8915b22435c272c25b38
8660c9c061b1be68b61d26e377605ead1f2f3134f01c718f994d9985f953a375
ee2e89511683e5d7f44b8ac78ec208fa168504369734a50bd44da78cbf8bb801
d3b7baed9b4cfa28abdc1d32809fa2fe2ab3df7fb697566acb8653c11464faab
591429c53a52fd56f6650e4ffcccb4abd06220ead3f6faa06c91151c4ffe0110
cf1c8c2d2d653870c8d1c792f63edb9082c122f068fa053c30756a1f162dfdf6
1c3506d9136ed2137df05a1c5b6129713177e48caab1fc395943a29ca68e1738
312be288a3815fb472a59c1cddd64ea5a0f5e6e77a6c9799c97bd7d65b6e45de
c2a5a6bd47a5dc1b2aa4a0da386fe4aff5eb1d9398afbc9d1414100f518c3f3e
b687de73e51360d7f91463c976e8582120c2326e4cfc72ebb4621d86ca21fcb7
d9b35dac44a1217e3fe69a52f343c276646f72f3e4056af3dd12aedbc8b84d6c
ab2c78ffc02ebc6d67d41f967f113b5e4b6a609dd5a0a1f250a6d147a6f66ec6
cd2134329caf32fb7ff58db6f181f3430b35b9a1226da67572960e25aee83188
39aaadc60c33937c4484b32a84f8ca4c38c22de8be71dc389533fe51e5d6f1c2
e3fd3c30aab720f33ff99f72dc8af2fa5bc23242fed1d988f4233f7fb63a5ac5
c713fa444e16e30e52aec5eff0c01bc9ad5d77e81efd4b4dc90731bbebbb2781
f913c25e6271a6c611c221bd447f085b1d6b8064f48f3b42a86d27cfb4ad6cb0
0d44ee610bdb2fdd46f9c5fc385a2f01802f1db6a0078fb3393b9dfae350db5b
2e6a4796a0be515103ad1bbb29aef469b71e79c54a02747baae79649146c3823
0d6e3f2e767a39a6e5ddf7563fc5038febb664482289a4462c4e8d6107704746
3397295f40fbcc0c3b122e4d3f5bfcdd26eceb5473e871943a0d6bae1692c688
3b9c42076e97955ef43205c8f4dd5f9456dba779eb76bff5f85ee96fc4516cfa
5e92de80e728d13f37bbc3b1940844074a251d7f8dc530be8b1643ae126b5e4f
4879519760da86934bb215b829bcc89389e81c6cd85c684b435ffc4c68fa45f2
c30d088663fdb0dc30a90b119b6bdfca5527965ea8cf56886ad9da9dce881193
882a782b4522b40e3b04a28e270cc27dfee2471338ace4bf31016ee47cb0ccaa
75f52eb4ec6941ebdfd34b193d4ff73df239b30921efe87f278a74a076c1fb60
227f184a33eb2d514747ce4706cb7edaf85727dbb08652c019f5b67a81ea5545
2e13e42366337a9110c261a7adaa376db4e7539331371452440b502caf74cc56

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):

2025-09-06T17:18:08.799764+00:00
98927433848248141101116537321085423190765260004678
11958307248995560821377115972371459682555458172607
38027220599454068056580585424289120195135808018911
81730326587260459146582170501178211539443530738873
14302158744574723126720989003647197879251062145393
95588392559171837068631580254328808020066587685766
69662773830196184153615022635702433077214838306566
23567471140858515082906309348557575678781969771386
29855400856080351233081625132866049622227385713306
31127091898628316188225410523421273390176131544427
99816633896226429074801093922236986757027387711579
70677640712258841717191063849895241625684383472606
20149439380372494396662960714003908659647930405116
02651805123832615900434097988283723560321632624283
34446560096922919662554056309033862127003563651054
04649951297636990696040006870385574603556592121620
99258124743473144505665600485083775011116518575504
29503334089296436203804383703448871964197169390338
82222311649271398236367949163006969009372079953751
07098286940416690731750748235166049907070875975855
90538707805013527141402204096237977709806659315029
20763830744177064647201419763109266501458979086625
85077086741145362187415208158427336595661969384775
54382333534286312679468035160229214715992269549801
33927963413978460874569988482814122929506131110327
19148428956747029719865805343612973616038745886410
92521169075346681306367382439294393181281090265267
55493725775342045165038426686900388140472152416300
47967055447875015902009620726602562852161582948148
30950992559580630418151671285466165141333105283072

From the PIN diode (digits):

2026-01-16T02:35:17.968181+00:00
31650294336162106441038700134424129134673397133137
59250960913860313063748465399580103157987378009424
53263471983341476105509196571189480058883288194671
15553013011639551274616147263721783653941494915634
96929777900482293819969473314749522813435377533383
63174637812231753899429408223304545152651177674091
39840183865576407129502859624279278251860634839320
00718920419758828601147980719832600845212879011628
40454501561299466244309334040560481706312245285306
19101925902891974113491940707757896762566642235649
43366329958014655628786560220851532391106994656689
71652742646056117529475275885720201615814063628235
15199620991888333294501076148098293433837993726861
33266354826794180011140506187484770871442092468809
03315027175994750696576061806671661098335250567550
27418229671153856134096617145014377449365770739812
51472468327942327656944590135649518194604870833263
59143891945066363563278258909799196878221482749792
27739319307577074987873929199494981366981794338968
27089129072800435966680939807308761368971147709756
90470128472982600743795759578091460671506090818103
73278741740583302197740216237050732008563513106346
18225766866397034382007234376470447841970712717051
51419564125918467763913884151348581307742246983659
56660710514994500595488667211891941196810894462840
63558795774808680774372927419748903922677418079479
72218151963447757821844188473728089204756795760469
95130834997648691117550785395094688636065736174736
42204369348014590462423912942571195672914901102476
70174680056575256179615779093327393816601893963427

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 | support | Alnwlsn 2025