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-02-06T00:32:38.125716+00:00
bde8e939f039a0f8b25557b4e6925eafe089069048761bdf9b7d74c9b4e198b9
6db399e871f35f6676564af66c5ff0e35850ed3e6615a5b8abac420e0ed3fd12
d859392dd3fbcd63a7d8bce31776692d70d3daca316f5f6cf523c2c9157d6aa4
3b8a0e6b05feca413298f74f6890710471d449a7a15921d2a4cbba99c11646ef
8aed0c16f398457cc41f92388ef25a7dec1148b4c05d69067a32c5a94b2b50ef
19f964f82951cf3dcf83b400e36276eed06217eb6608a0b36136a3f7d65a5e5d
5ae2cec57605fb0e9c7f6f8c312834a1ae53c511043f6e8f1ff4ff1b4e576e57
916e6582ef72c7a376e24d67a30d88bc396ed936ce8a8938e0bc93c577793fc9
ea996550c068e497aca125b714e2a3b4c37d5e93fed0b8a61b39a4dc80846370
d2ce31dfb9dd2cd651e2c8b4df133df2759337e83d49ba2f7e23ad3b4a0a9be0
b1f2583663979f1090577cda93c1f176ac0abe66db7c5f69af2832fd86153705
449f659596e74c0529c579acd8c9117a7f4508b983722f9cd9afcab58ceb6561
d08c1eaa07f01e8e5ea3fe30d1cf4e78dafadf335cd989cd206ddb458c93417f
c64d2f9d5e7b4c611e3ac1ebb1a72c0b985c69b7c4b24722bf768091f8bc1f71
e8c29b23cfb0ae43906e53c4e8da6f9eb7f19a4ff2b37ea628823a0698daefaf
0ddb9c8fc9b8465979af33acf4683346852b2465bb2b1716919e3947267f3b6a
912652b7373a0c48317a4f8382a2cf6bfbd63ef15065fea4d6e8f83c6bfec06d
e044c1e776e60cb9b97bfc9dd3c92f8a43280cb5da916c9c3a8e2ecf861736c3
177c0bfda41a4e866ab0b6ed05953d099f0bf1d65b75a6b1f5b626957a43b5c2
4108932fc0833dc54eb385fbc1a8d9d56a8830eed9b4e049421ac4a95c312a39
6a2bb59b307b0873d3deaac67041e3da838323e5ae36705686cdd08321cefc0d
34117db55fdab97be3da2cf3a9cf5c313de5f97b39c655b4fd8d22e0d5438bdd
1df73b5fab71f72cd31af926a1b0449c23982421161e6f77fd0299dd1a8ba308
0055d1efdf1302d002c780fd187c151b577f86032c8d669df8bd140138e407a8
086dba45b553d2f6a136927ef7710aefdca13c6b47035c8e7952241ba27c10c4
b1516a6df952e8d18bd64d1f532305b905c19b9cf3d8081b01abfb91efc54c34
3175366e1b8488e11d2aa8aa8a6f30bf1e43b82b555dae19998af82cc64ebdb1
1811f16ffa21028ad151f7c3e3eb5c08a26c22482cd0e9716f04fd9dd553c5e9
b3a96b261ed461d7af93a7bf5ab8bff8c6285e0a5ebf95407dc876e0d2147f72
4363f5cc1d7790cf2484a4559d4dec4a52a18f298ed23dca9a65406815d832e5
504bb3a349965ceae509b3bbb9a6bdae9806de763096be4dc4761fe5e8be8573
c318a4b1910ee3dec73a7629072d0f3c6f82938fd3d60e058114f12a8677de4b

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-02-06T00:32:38.125716+00:00
89575760788587804694753706447218275525168052850979
53139502188674089588806202216584717266141418895745
99678823180545124911950835942125066459381407056550
52790444130413736761893364865393227038122252692496
31465642902517728092930506225097697543802500418161
31800098189823020860799754639094939097180514562711
40494052617483971704631043312778871087451001301499
63187703631336885710543837568847971921635301809204
51726137832063809525944784662757642832991249854481
80196117475561738647263573597410557788549951591644
87244793187210900224950575405034215505685901495076
05419721721722276908853114475675814001974030700730
42946348782051923732096940476527987747579423769730
58937767441152920583967871349118284588311394553576
74674410839611588354797926664030580652751356438470
89217551720451703343360187432322455857713827590645
38828355581272492279313062076280016460079209689318
12858523574738674012814508565842463423549523241164
26783406768205496109591191176677823849226781946508
47479231619778793393680636488073662696699249425706
43815548230815709812653131357454128634313313521725
81958523446992496123579885804134673929599571134426
38617668563552363322301119025326396308008519020299
28242421278727340344410257892001560768080986698183
61544626131061600771039242218236276224169677810609
82397731833505850593555608270171459776524917541027
32362942687038114891306784438593742553384498788977
24171133023881959208620834724413110457839779690738
30977547679190849198409410949149642518202714679929
19443632648557777482614341426154016404215080757963

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 2026