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

2026-05-21T11:18:45.220121+00:00
c285ad12a73fc9158f0556a14c45b05a824dd57e6154742dad781b0664d66890
93f29f683f52b939654ef1336971dbe593dd1b94a4b9daf4022215200987f891
2c4ab730e7ef39a200b46b06c6c03f59049c433c1acd68a03a758f12671b5845
bae78f5fa97ea2a75b3a9304fff239c507a5d209533d0c15740965f59e4c841e
1a3f01f25f7ec5a095bcab37f6046ddc040bf1102fd9a067941247e08f7d7b99
9831f3f5db53e3dfdee4d0a0445c88764bf53b4423e08c328fc6ceec9f391934
1814d756bcf00fce7a6604a63357afae182b38cb91bfae78f4fb667ff1ff4f8d
6d57412a5e609b975c0a0996b6f204eafddd7db7dc6567a50a5e5563e82239b0
9a0ae4ff785d67f680c49aae3daadf11017bfa605768f234a41605d214eac26c
2cee56db069220b375b8bb54774ef76885cdc08ffa5cfa7ac9295096efd83ac8
5d77929846a1279cb68efca69b02cbbf28685fa27ab7104d3ee49d5a557d9338
c98e8e9624167fbc88b22a0e3e5a94c9db833517f0a87c02ee9a2bf5e048c22f
37ec0ebab902a82a85e349ae2418e0eefc6cbd636ca71b80e1f24e4a2dd2bd24
58ad0f2d0e2a732d57a68bcf06e0d891abb2bd8ea5b340a0d111d3e7b363d3ea
ed3065b09e44e4fa0633c97aefdc1c7999b2d7133f56342f012cd1bfa8ef2b41
757f46c52ecca78680ac357fa04539575b2619ba69eb89ebc4513a425abc4f3b
e057dcd3c1de8ad94530d403792931b6d30cc56d8f880693a67f23131afcea1f
36bb12780e5b5a17bf6c0be6fe47b0ca73f5a6e2298931b55653128e0e563998
3fe2fb12abaea10054f9b43e52f56ee09523546e67e179fe6092f62ff0319287
4d442f5f7772d39c839f4c2758015991978dfa717a396c3ca260aa10bb164190
31606e7c47e29f1a8d2ca71b91626da833a56cc346adcf6a41a9c964cac47682
92bf3ecb4d57fc371f0a86ec9f2eaed929366349c738370871b19f0d21625875
3e353865440403abcc51110e9f2d5b6c00d5c75fa765284aa747ceb0562d4c52
31c5e15ba4b51830cc90180415f0dd6152cad851900f30d130ab1930c656927a
02065b28fc19e421ee5325451a5ba7ed2cced58b132edcaae1206b307dd0f721
a123eff3ffb9a0ac6481882354f3f2a316c4e0e861f5a8eca63971a24ff0b505
dc53bdd6bf87ea325b16186caae3b0c7240a5c174eb367fd1161fb2a11019de6
5f6811cea2792f0e724f0bef6d98b74741af42919ce9c3551b8fc0adf26f6575
318d50df054e99b79f6a07dca6b16bda2811fc859ca7df40d122325eb3491d62
794fb451fde52a3c152e9d774e69c604d932278309e26d87e9548e052a027481
81c4d6bc00a7ecce412d4e0a0c8155c648f7f0b75041c4d0f7cea28ec8a857db
5a980febd4906bd1f5c552f3a5dfaa3b08f1bc83a22bbe8d246a78fc16682f3a

From the PIN diode (hex format):

2026-05-21T11:07:14.417958+00:00
80b9ab3f20d1e27ceb83fc79b7ae15381dd891774479ba7f8fe6c2efb49a29b2
b7e4ffbd9f56047a6aab53de5ebbd63524f48f5d9c7359d375eb087954a4dde1
3c9b45f00f6a3c336b8848f1505e86335068a6eb43ce241683e821642b09f5e5
58082580b85a752af1d7391512301663e4d04ff89ee51a4e2782dc2f6dc1d463
913093294527e4840dabc536d17eefe7f7feecad989f94d9c054c036e8ef1920
5a61c2c17e2828632e179fa26df517945fbe68e8812157688d9b38125025faca
f4c3ada00b7e4f342df4868a511f01c24fb609250d95bcc771b1ef2ce0bb40f9
df4d0ce39b581cbbc32b94bc2d8a39a3a7558a5a83f162a71d3635e2544f2bd0
1acc8c322f1877cec5266d2cee19d964958ce374076ba35b46ae27c92074101c
46016f1abc5d8188692da763c3839b48e3c970bc857da8172101047acabb97c8
b18be242ba33f02997146b9d3d308aada3efe9b237b28322f4866f203ec4d0c6
2965861b4123046509963b466015ab0136b4808e24b32f08066e04bc74ea2d89
1b9d5cd379562351456ad6239ddcb2e0e19389279bfebe9f72b2a00a7fd28412
85b2eda5e0228c4b0e144cedf24e445944ebe6cc6a19a9e24701a3c89dcdf63a
819a62b06c1db0bee57c620bfc401fbff93899a89be701bf1b870ee76ca90d61
4dbc2aa661913dbec0e2485dc5eab407479ad6588faa91b7e2605d3d16df1d29
3ec796a820e5a8941b47e2dd7e9c17b78731e5fbd5cb3739b80eec0efb9f393e
2a857edd37d11f3836233bf78e92d41fb976fa997e12f4b6cf200efa7a20c311
460784a2bfce1b8409427399f8ffd31d1820e7f8f83dd89920b64358f74db016
7b4b5510c39f2d2c7876480262ba007e7591d5046dbbae391720eb7de77701cf
fd8487eb3f2205819dc2173b426a55cce41648e2b341e8ecf14fcba1f05efd47
523545fa28692d52bb7645a3ea438609898f9db207749b7a79d4478796ceb336
c97fcab868259d3704b1c3ca402b1a00ef54373d75764352770ef36f6c058cfb
8788119d6988760d095f3cefd354c40819fc9b7ffa424afaeb2c4347d0bbaa5e
20a2b8b410d08d5fac1bd38fe7f4fe78e3e3197bc62c7a3edd688078dc37246c
70c8969bb88f8fa527e12deacccc13719ece323441080260a589269e9136ec02
173ae0e66ed1e8a57553f1f98789a921d32c2de9453d4f731675f594f9c8d672
5f2c5233941cb0f84442d77597c6981b3cfe620035402bd1c92c6d862a08d004
e34179b41afc554bde805db304774795f384442505ead5bb31f40465920a9c55
f9912a4fe7241c8d90912269f05d6936a5d4ec518672a8c9da74ac84216e0cfe
1bfe4bbba9fdabfc4cb848f69a587cf9f0ae8fc12d4554fdc733e8ce6c2d3d46
ad228468847446f98f83044cfdafa3af5e9fbcf99b62206b34f6c1d1f9c7c205

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

2026-05-21T11:18:45.220121+00:00
94337318676321430586617669769030772697841645732027
06000444475904638285570178510513472748648502342132
09354544748348576200800706989263890456676026046058
17431803278869864395692662679158470457970765098361
12211609015876323026630195269760498871550409041116
47600348187143252353524983606892361875596835405043
98595725522420868815220204665187757424435645917420
02277941098765429496555192100950820425830103651094
85993457765410209303289654746170170123968704526422
05209408448606463279178487841978043392439222418050
58931946527061395682426655029140049562228316776257
90852547564242503622278836784214629048315323682402
54437294475514868502684233737436240889990867272878
74458936887315451442154587663906457178894265796460
17799948017658680651222821537819638652470144916843
65172770974667342872532760695787913825860537968158
66908879598793386948032141498212970943360647662735
19263154871820149190239108117176156641374981868318
42148657526318717461008480628210493584100321964647
49463577684795191456315976398801894551411322570860
62967016872265444996102471592641446727459809685165
08957073066569009618304691627787553110345946744154
99739956550813775913339888176253560168040371811714
59459108009995670140746771768645768249979164812448
44240421978281441548487125489886462202069140253383
37692691674439194670320748253361358560720029363584
63229697686657136279810583899135509122240870769936
10922378790317974217015795041762214714147911095283
71657566455695852743927311011749418005785383590607
66770740173356676434509479732998217980814260214657

From the PIN diode (digits):

2026-05-21T11:07:14.417958+00:00
28857163322431218374215629451968218627439480544178
83895986042206718394875336439356158917082184646055
69150660510736728094345180046667362231330043098808
37288490174257211848229979582678393047099399454847
41693932137197542673525948928492542532909794932640
40994623596209234895900429338704415556188037957360
11267952453438813101947982093713498899137744876477
12558828879543488845385763678538903198672954538479
43264050472419973809442500494016070763917074393216
16287001112688932936054567999531557212883325682333
01042287517739668651415120075761483873637855783134
34113262969841013427653504010950597096217101548028
42367947080610048816453727579221863581690635577847
37395590591478601027321833786534407514207678688968
06256971016357582954987608297690249811643191565368
55019127351408691397778842669745619092729397800771
54884370458396936122294162995068326848277126562383
35495557841414595762423326553156543559424631851853
26188232142232951770073262912732096615532924326153
32826788777622237585169559454420187202988600261745
04098774572332251901323563340529579423596606852272
79657961947182536940054582871869636734093743577807
16552221713550795427840437575504779564432600845561
17186782191411080540353617570536181309956084960825
55276674446771877094326284801641957227432025239844
22620428205536081250558443436539451913585052650802
96653738584554022358106517833537693344456961791522
17481495448251482876686617519852276098005364434409
34420804652180268575289379041971493268370587490401
46105685454279362841444534059305546581341468167232

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 | patronage | Alnwlsn 2026