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-12-22T22:52:50.185443+00:00
a08cb2eebde5fefc795d4ae1bc8f2fb2343e1e269495465f44d383c117e0b573
c00caa755b955e339a74516dc0538d435af02d01c51f825b4980bea98c32aca7
fbb461dbd83939bd2887a4848064e6b888854bcb659b648d4d15694b1aedf7c1
b83bdc555e28d526673773b9606691d67bc911d26e400e887841a6a3921c0e1b
8e3d9554aa158ea86cc26f872aa1134f462be468d87c05b253555d836d048ec5
1fc91705c6f1e6c3b23b69359971195f6444b2c56782c8eb58fb80984d2bbb06
cc85a48b934d816339c2a842658e266e3e826af27b98f8977a97af1182f0e98b
988696371e9d2d79a0dfb8a43b00cea8325f5f532bf1bfe7f5e368281fcc0a25
d203a3d9902ec4a1580e6d0f19c64fadbc038d3552ac4b616e9e6d1e7746c8c5
340a7b33e10cf6185155f84587951811adbda83190c6ffd38ee095bd11a3166b
c5e63f9cb9386a85c2c53a5c6395d985f7a37d868d707531da2933fc4a558867
0162ca1910f2f1fd47a88da2e209313dfe4067fa3f96723e69c7b06ee824139f
1835322130e2f0b36f130f09edc11e7d93298c6cbf64695800e9a6ab7b8aa471
5d39b563e49a557b5ea93fc6b70ff8ced3031851432ffacd2cb8d6d98d8b24ab
c5dec23cdcdea976de7ea5fce24670a36dbe441299faa4894da34c7bdb2a6619
0fbf60d3542530067066da0b988eef57691f0460510ce0ad7cd259e0b09b4c8c
2363c217e43e049880a589cf1a4a506d6d67111f29fa67761f84c8f0379a27da
254c0feaf77a6b8918ffd3cd9675cac3fe80c5312dbf59d7fa9695f5c7d16be2
22fbb4e61667c7bd6adce45bbccbbb0db6192d238b610390d427c77cf00744b8
60543faf3c03d73b3e37e14a5c31822a11945568af84e1093462cfc13175f360
c02f6b4bd6a67896b5872e85236e605d890a603b4e01c9b3102eaf01b61b8008
c75d957ddf03610825678cc7e88ef0a2f668982359b707f9c8628f0098f7fe7b
225f36f1e9642c48eb23de749ea40e0697bdddc16e48b61641c4081b1ab42baa
8e2f267101816384589ca6df68e095770aa4266c40396902cea6a3277777c318
b60ac508d7a0bc78a886fce3fbb916aa7a2a5d48686c38bc300eb64b316d0812
3717f510f4505a855f2142624e19eddf1a66eb241d8abd859a98473904f65ddd
4ef085ece7d8bed77ce8442f6aef068f8d694809c1ef01dbc8771e1501052279
a43bfa25753e4f2c517eb7dfc3e2d609b33974d9f11bc68d87559567bf778a4a
19248cc65076dddaecd560bde114a8d5c13bfeae4b9e5493f2b22f8b0cc8ca71
1e743eb69397434d658681dc23728c8554f05c85c38a2c9c0f48cb76195c0121
8fd50c030016d279d151e13690044de0339874129e6a72f0cd86347a591e0ab5
a0513dc4ecb6c5270da21a1386eca0bf5b09784471c24bd6cf2280af04f0a991

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-12-22T22:52:50.185443+00:00
60407889219374884347785262303848497095683193238115
92127017914994515416810992834167904501973130917328
90694050726780975757894035643228008436337501550041
77210575269384598594403803551585960245231710641436
20656663462814274261498470214268089411354261197970
43042405788385933109044297312305989578590553531325
95006878970330882852774387063364394777299957946866
01423810623006235251225175173039523450553057452160
84645900685095958343910440311037036344469661881409
15259879738803415382727597105809301970975210235112
24818569354924177389684944984249891763220797635685
56063394975892994933632534411217494151748536030198
25167168416209496164036350146205997610361959245350
33487911191509933025474140089100058800667123386413
93578199548523946963988315032481674744844139367197
94606918266570126309906818536437776376234202251591
96843748061202115242870531049681127324897655764035
99942362045228653726748009090317314103183132555439
37761522073724501795289749459189504999073480220399
89069188871382254535399703443999240768849684637560
03596255749249304217488504753209529893491796924707
75662050813546333510969337109659780179164675018227
28089993492503970837034099426204523589830798430052
23349554004472351658641406518993107282226596082726
80437042473813012999328856660449191064380864570502
66633919199524821097086088206834852270224293720408
56884814827549090818552316809033953366987825260236
29388933545271570493783390246847060643410572099301
19302101053421645937176279448126839509795716279841
35854903911938742536409880189689206893597475588447

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