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-11T00:42:32.563673+00:00
865f42b71290b3ecd3c12042343a10b1fea9138a2362744e30eeaf025477e8bc
0aad7f131af7914a90b564ddfd32d283ea6601b47831e87bb54740f07874ab42
8b660466ee31f365234be733ca1748306e41bd0e92675235585f10d568935da4
e479d08342d5a1f4269db36efc14a4186877e30a12bd69c95e5d4735eefb10cf
2bceaa24ae24c773c3be5d55a28456152ea8b4d10d139724f2fd38d5048963a3
0324ae845644951cd43c4882f14f93300ed3b722d501d6bd7179f4a6e43e3337
09d1dabef7e612207418060013dd878cd617f71ef63f1c5f83c3acb11bbcb5fb
4c53a0e5bf978cc8e3682f6812e4369ab66f148d3705faed0331b2a244ea5630
008e17c0f602f1645e7947351ed17f1f6a72118c9e266f34275066c32d7ac935
e2f70b8b0bd552b7bdd327ee3e13701125e02a26b93664b854a562ae3d025937
a68fdcd6b6cee0fa5161569c16fcf00e095cebae0feb0bc120a5f61f776a988d
f1fa5e0f2e2224f9ddd51b92ab5f40340368a53fbb56923bc920a81ea4ae53d3
1686b0399e591b9b86736f5d8fed1e84626040f58c58f0a5f8e5c44d0533fdec
75ef0993455d335d1800fefad76b266bd9e78ab9d4e5f9f272ee48f957ccaf17
7f554b89e3bdfd6285e2f96a3de6d2688e077291df95746828463a2710f86d05
5c7bbaaff01a0f00e5aac3e6d97a59b08f0aa328a57c7a2d6c06036cae28dc4c
3c0139743e63f5fbed5ae29a0990a47a18e9b30e47aeb558750d3f8ba83e7472
a5eed4aaee01381ed2afd21767789e2f81c902a26b01c3f80f15d3e606b349f5
6bbe8232e2f575e6592ce3bf048b1df58d62a5e14bc2418929ad298a8a4ca0b2
367beb9d5cf8936378db743882f6c2f50f30559c69f8a78d082a14e44a831c30
579d3cd3045efac1304c98acbf22858d9fbfc6cac7f6979eca8ec9e263a21aa1
85e6b92b84b8c8cf540cb11c736e62fdbec330ccf26a748e5e45f47d27ee85bd
57a48cdd653897775836d1bb768a07662445f1f62b2012aa68ab7eea7919c922
07b2e41bba4b640cd616391ff929b8169f45bd7fac6b4e1512fbe72c67f8cba8
76530b2e75c1a7eac24df7b67aa4dcef33ca7a7e7ad0582172b47ea7d524c238
62a9a96399b8635cbe3b942671e690e313862bedb4a8983f7f7e5d610add4b74
c42d384a7b6bf24a0c6ce08dfbbce663890b59e60fbf1356be5d01be5bec7357
2095f7155941ec3f87ba228f1abc82a97511dbc1c41f44d33721d4d864e0787d
ad9308463bfeed9d411face7b27aec310f68b0ab656dccc3631c510adbf0499b
41272d2b3eea9b5c3bfb0b3031e0f99a0419f26203c0cb9ea4e62f732809c4ad
d6639162ac56a6ea4f1023c7367c1bcbbda916b4b15b7e82587399fd10125793
9f1a8a0d1c5f5c8bdcaa9b4cfa16f13edeefa51362d9a459dbb10053d628b9ff

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-11T00:42:32.563673+00:00
34956683184479933266525816776919383598167848750284
19881073271926457444810050310201802049238171642016
71663902040249013575512372481065891446038253889516
04479364213166613857791020642404191018890594937153
16437036743699159590938562328621466880131951365604
37996303367432866849286072307947481483340189132166
62515509901832162406001935402330632895319572772788
81768360915140044704185454821120415505034978626886
48004223920200942171533027310614174058381152398002
95452253113911828389396219121737423885540084846598
74610289556643828197865622140992741511933265311906
52419415463436274671956452030465638786465932683064
74832234765758892755341511934330329896644088659677
05511709476993519324000738073885147287752327857537
89983306610442071445491604407058391609059223867526
15007095228976431063406524224508060308744076600157
16629990540944642224791471748188171363396862161465
70015630752303205847290262070195152106797307903050
17894491043929419865759465374173413838766078542357
92479920165630941548855605674108422074312848875760
04949348765272913433415991989951584299622661338543
32848412772815109890954806164294692539338987644001
56511988548718380702366943321870047126212534077827
86750012225731418422596989277207782118440368188311
46179367947782226451222622883314802667369456986969
99538499929059483813441934438068526327269397107516
96455674230774120841889937118915911986909301909115
87324921896563358634432688306917179396316855330020
25734708705957653172782249150476710109959928811073
55653945436255925911484954042598039258644715400996

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