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-15T17:36:00.937232+00:00
cab82b7ae0952fbae451b32abb57c01ce4c0e97a3381c8fbb62ee2ee5e8f368a
2dfd80beb29c31b17cd34857d4e4ce70e4132f4578b1ecac2f299662c8fd6b01
72e7efb5011fe6aadca6cafbc5c1d215f7dda748e25ea3441921164b5af332b5
0166af2503de87f290f6b7a590345bf2918ae4c4e77bb29a1b9b9c086934aa36
7eec6b550c952fd3948999e4f8920554ef0875b29cd8a66860206fe258dc92f1
a2421f3f520b64324f3ed5de1d38faacad1462e46e8a2822e7574cd17a840e53
7c3d800945f57755fe95daa6a655c80623fae7d15914ce8482fa06a44ecbad04
670daf35e6ed08bafaaa0762136052c9c69385798ae3c776066dfe0e0c1fc3a0
aaed13b551a772379b3636a2cd97a5beff0a48eedd9b370c9faa965cb71e0750
d75c6c8c97f0004d38469ee52f6154f2b57256a1f0a5e6648a6d256a4e07526f
c487e86fe2d623bb03d05a480a97816f8b1bf078b8fb616a3f4c2cfde5e90ec7
b91f65d3c2829d540ed47f8310d40cea8100735ebbc73c4a48bcee7635f75d9d
27ac5b87a21ca290bd9d9e408c5861c14507a4787a298aca058d087c7bf56a8f
011a94d095330f15b22cd46f5d93b01cf1f10653f9f45be91c7dc20b907a4e4c
525fb1203a2b1b519031b44ab6a67e891faec0399e26fe66e72efdd94769fc6f
407f7d5805236d7fdd4d1a53d9eb7b54af93827f982a5ece5b25a98213778aee
301f1e4d77afc05342027f60e2d5f703d6cf2fb3c098a77eade4d1a984991c5e
66f6ce7adee8587b9cd0e8f18cfa1a9e37b806b9ead1e6b2a9b1b31bdb3f022a
605dd87f0d7522edb287eef0089534519860bd9ce69890fa643f5dbf683f7beb
9c01512c7812d86fdf03ccb7ca569075c2f2c756c38bf4e38913513bc4f05c9d
fac034d04bf69951a9a32d88bd07e38b6ba248f26db7c824e4d9bc000f135e73
151222fe990730d3e9d0dbeff8e21e0547326a8f242537c5c3157632f81873da
b1e4ba0a72f79f0f098efc3733ad4ee9e0b97b9eeb8677e0800a239f9794f03c
492fb1d33802efdc5daa8bfdf5a95139924670e41ee67138f84647ae11de647d
b0c5c303e981aaed71a57f3125679fec5563bde61cdce030c910c051ecd7afb9
d0cb5d37ca5d93dcccd1ca62e6b77156298dfb83d740a76c410cd7c6aeca01b8
1ee8dbdb74d55f29842c546d89092910f5ca7bd7a357ccf99d63c488f7bd8781
6a818e86d1bb61013be2e0e84c3e9b8f810956d185ebb4b92db40b6c5e75f4a9
cb6a3a9006d12b98152ce63906cae2aa74ddc6aa5464309cc59abced1c7f971c
02cb78ae9f606c2257d5f35c1db433918fa1d8b5dedbfc71b87441bf2a0a66ef
104c5e1ebf2d961dc947f66678a8dc0d33dd498f35856c2c03efc70af5a08efd
5438e5db5b067dff7320e589d6468644057f38e70d91a3cc505fee7df24efa10

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-15T17:36:00.937232+00:00
84432249478681794287879228922251298246944354384528
90785649772472871219476920777247415098070114810131
70669793216772946368253322759050810102753703354483
65445291453896237854275556080552705426078512494748
37534605840817785666049632118846626631638211005079
62295672732098103840348776223214832461280969198549
66668506358920323006647873040313755308867007981996
82984733213899180609141231956070198181671455555454
62516590107255551259705092833007809208405100775670
58479784811486616500380937067807821196351135870390
72105129113927208497066376441499853101943057841427
31161229001594879960747288185393573972913562286244
89575864408897936907642022413805410824230643012648
49511521784411934776280683912825941144227876829577
32584327814449807482662637317492575838024671051164
27258805350927772683238475473027524294913769301919
38483130771975928366022796034779925267267369325328
94022288235640265855840685786977792763024296932713
17347835084952815296895652440063939104632356018144
20181103838644179499869539371981599692579252755381
69634536890739076272098336880015199415211834530748
30057150064336375597952118502415778610145915094255
51737885235834192810355951486073477756029370396981
57467012301356707174170025769795032970136527493703
59859989284816928175859355934798831386414131646708
65129874018430169541324484093709411623638757999636
89352906294234879701597662554329098633808545801108
94176906584406435221445706701698708400485697548828
27512802207459960834879229805145436181138416659142
10021676943091455029710220681351734353330844039910

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