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

2025-11-29T19:09:24.979743+00:00
e70f697b8be2ed1cddd67138479c192dbaad5dd99b1c5b39047cc4245cb3e60c
13a350723c68bf2ea5947cb89119754c0897b4011404aefc3860df8057fd01b9
bfafb74a61b219ce3c5ebcffa6f218730a7adbf6e20bb21a961650f428feee25
2947787ae4af4a6a7bed6043accd259a2a4e88e3cd84d0431d04bcfc65483062
f3e06a9ea7bb48e0af8eeca6ee4181c9224c5680b4665b3515cfe0d44af2d50a
f3a839c4f3d4709d3437c03cf0e99eb09991268e4527ff57924c4546e02428e3
e206a04250eaf8e9c2f971b991c61dc5a34a58a218f1e23e45f5d02195fb68d8
36fdeaa3bee0f7a6474aee0ab7dc49e691f448daf9afc678aebadd7585fff38d
a36e3321a2f5b5c4ceb7546fbf41b451faa75276adb8e95841db59d2d23a2d08
2cf4aed09a3b8529c28f3f4c6bfc2a25269c471891e6b246dfb07cfcd3fa96e0
5338fa0ecfccf457dbcc5d6bc65c1c99c0d9fc92e13e289ffea25169203eedda
364afa101282bb059a273527dc4f95b47a8eac5edebbd5c7ebf010d08641cd58
c9ad2aa2962f46a0996f8c7f935c2cd073edd0c24622e40cf13a0967b5b07ead
6f87c39c8e30bf9d3c56eace674d16749896d897ed125d6e9da77abe5e1ce5a8
958db49f8d47bfb3abc5a3468e7760456cd2bf73463b3c584759632549dd22cd
3279ce3b5bb06ca27c8f6931734fff9ca206477b47cefaa568455573f029ef56
187a503adfe1f05df8c3d6dd8f4df0881c542483015f6e03ce6cb9cff0baf654
1d173b678808e7c9d386850bc18c3a28e0aafc08eaa0c488e1b420c39c46781f
fd65d0f55d93885dfd49a16d0e992251ee8faf74260476190f648c39a1f42adc
ff86dc76dc36e07b8abbd5a2a176ea33ae7fc528177393290c19b0d4ccca4e54
86cb13ae58e51c937d57640a37aa078d8943c6b4fc887bfe4c491c902f5b699c
13623efc31bba17ed8686eeb4e7dd9de3522354649191032ca50ee495b099d86
44ba92b4aec79ac09229a88eae682c3c3c605dbd944a06ea53381732d819ad31
18291bacd486106918872c4db5e697fab55c541d7f07d726f5e4ad9a0fcdf63e
8e226096422bb763dda70fb84ef75307b4566ffbb72b44fe87579a213b5136c2
a9dd713aa0dbce6e1fdccb874c2bf64f0c37471bb61c51f8c09553d48d4d2470
047f0467752935aa17ca7ac39efae039646359722f00020f2e3c629cc680a02a
66370b3f974122ef4d85eaf5cbffca1781c8abea7e5bb8217b5049b9f2a74305
588ff2d481c388069714e6f5d09e48cb448e5f4e92161d536ca6f2301278c646
cd183a1a66ff2e67a77ff058a755c63ad0c3f7fcca44ba69c97b4a9c811562c3
86ec9f66d8fc61b05e8b856534415e9429dbb2dc0dce930b5e2ab85bdbe8a31d
ea03a145f9019c8feff841c2a00a8e43c148a238561b8582bf9339365b42cbff

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

2025-11-29T19:09:24.979743+00:00
15052339281356715625458673935528915704249636927912
19638014600491466548248445251776085180012004745696
28870185917583749778256094886624151022117826502280
40374171202275740623966772375442783632672904880172
48980658678772754266652934768628800291532174106857
96125752559260587653453842693987467669703640066066
80941385459829976374886224626933490454639066717410
83734572759820748617334163105133628196838411916580
81678218738488658958450844745459334194436376074237
38567124457870762450835614879307989228539246624059
62810532625474161830870554395339794980224272948799
16346588734262504770605311402747924415947034125809
03817626731135955642489157608603772216525051189310
57672290942868494180594171917971976370421996690891
15705960887189993773345021599176086224430549157956
62067123716504698515418624228058939543773628843631
01951003088586842923590336083433119340584070086096
36803295567020310193473693736109145334814375163804
18251500405761423418542338876261185174279740231547
41122576788434197488284725870010557007413767988036
23767328444791055619986249876126041078255334537073
25165080739109573468864680749954924641684274044460
60969389487406835623502573492441277234160524354477
81518192842927073873541562423496506643839967158478
83078086118343683587543359815494691358601031357643
79125571278228819249834177361204270403174153702322
95585700998914470002154660985698286042025511635165
34773323297126918433238073856767058843299536065120
58726842957846222983086648182098702458260246036727
88678598589568860523745629219895345902977694393301

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