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-07-08T23:39:58.790298+00:00
8d4b918c1cc91f0b53a20d521db5a41748c53c0a5178be0facd712e49f94ffc2
1bdfd97c55a0bbe046267088c5ddaafc00afb920d4c3b5bc1a2699d0cb3adcd4
9be44d74ec0a0e22eb4d60ba234b065e36cc757017ca2ddd14f919ab26dceaf4
726f4e6a2ece93313beeff58ee8e4885695539339ffe4f7c838b4f029fa1aa7f
1dc18bee7fc04b04756481c0ffdaffa7a7b4623156c8e06c91820c1c0d0057c3
0a6f73992da30040040e90707f6a24fdfc62bf516f790ae5dda47ddcace4022c
5ebfa3d1c77c20d011eea01fda4f473bd20c48a9cbbcc7441231ddf115b4c9dc
7b9ea22a7b3f4a185c48d6c69110c985cb9fddcbc2626496fb3661f9b9f246ec
4929fbd6c13acdf684be9a3230715b98407ea87d9936de8d878a6eb82b0c7cf6
064eb8c134dc6d8747640226838d6d16a0acbd505ab11e66f8a4b9fe446637a7
5f96951e2bddb9d982df6fb79a4eb540705fda36e5e41ef38a2a74c3782701f0
0dab934b26c46dd6e60979ddd050281d6421ab8d1f99a3429dde849c5acca9d7
ea44d5e1ae2dc31bc82c6c9a4a0e59c0e86b71f78a30c4633f605c743774638d
89494ec2169ef4dd4b316c85ce26bf7b109c34bfd76bd0590e6849a07f11117b
bf8c78a457512e1bd8c8c365ed790061fcff130410496c50e06576fdb93d92e8
55cd8073c9cb478da5749566e6ec675319ce01f53a022496d912aa7d6151ebd5
633eaf7b7eb7ab60d2a73c819cc5460207f0060b16d33b256223c9c9af57a616
5cbb8aaf973cd18f64ed964ad5849dc3033d94abe8b96b87f610790d24fef5c3
833683114394a4fa019c24df4ebf11b059421664edb672340a0d0612543f23e0
6642b9cd598cade65bdaee40caa92024eede0e97438d9e9853e50beaf51a6fd9
f4a699a74779daee91a6df893ac2fe2ef4ad70e94ffdc078afee2f10ea68e512
33a390cf9d8896b8aca53ce17acb0907654ae661ff859cabd49edc4cb5b2b978
79857db3c2f5032f0d540ddca3b701cdf81bad820ad8514f99d555486f6bf5f6
1af9a11e6c7501c9e456e01a28d9c83dd5a874f38e9ea37548d22258e47fdd3f
f57411ef69612eb11d183b9f85c95a0970dccd032983df90557bbfd8b1ac60f4
81cf6632f6b0fc2d2d0cf390f8bcce97e3ecf626722dd63e6117f0b61ab45a38
8518ef3b253b9082c14bb0588b3d6307560e173715affb40cd6648c52f09181e
c259f8a6394f70b0baadd009ec3f1c3b31882b9eafdbe25df7bb3b11669aecee
90cca2c626f386bbd905fba2d807fec14dba79c59da28d7d3f40c85c4ea3122a
1f0fdeb74457d5b29d3095df75f995e76c1305001d31239b2de93290a222c54d
a2c352298b67e8fcd81c53315b5d8cae0f9bbaec1d601466a10ec27930f6fd62
f50d6c6310d878655b13002430d413c29b0e4544c60b82678f847c7e86e4e657

From the PIN diode (hex format):

2026-07-08T23:40:54.790888+00:00
b939acbb4242d7863cefddae812fe8b26a9faa09deaced1359f2502bb694a802
a4ec84a3cf851fd852b3c2ebb4de3960858366fbb7b4098110050aa6f0374308
418399bdacaf182ff42f2c4277751055e4f578bca2abe4ddbb5f55fd55e8c5ef
d8ddd84ed3608676a1d9a0f4554b590fdc3bb15e0c8e7117297c5070186dc032
25ebf818843e7f8999457f53d4ea40cfe917087be1d281550924914975c29c0d
a2dbf70b69b6a397397a7fb18c0b602d9714560bb8a49b8575a557370847f705
3c780cdb34a9ddf7c7f1b9ae3e36a4e3a70daee21cb10b771ca0b471f5860ee9
b16bb067cb15c08e8ae0bf22e6d41cde395b7ee49649dd225767d12d2c6d633f
3b729672a12f07975bb56ac678b1445f798a513997d0569a3f8658b9379baeb4
caf912618d3584155a907e65e86d52d84efa997a590bb93f59cf479496b69c5c
eafe98f009b5a6af267e223e50c6e760fb07dff64711d13fa9e82700fa90e8c6
5f9ee87ba2bf2fd0fccd80e2de7b5d60f49ab91702cd3f1f2fe6cfe1c998d6bb
612793eddc43d63bacf91e4695881946982dca40a84492373c8e7afe08781e58
7f03493dcc3926e3a609fa05748bc0dfe5ef1c13cb0d818d8dcddb015150d330
51f10dfc851a60db19fd4801d8c6e917f3ee83dd37897be135211c1fd9a5f16c
ac0673208a081b9ca5e41bf1c6955ae138bd5ba628873aeb313580d3fe8f4095
9ccbfcd0ecf130504a3f3c72cc5944634f748aae8b3f81440112cc715affd674
c058de6b1ff8227b6dd8a842cd44f51b9bdca6db03c939494332aaee2afc8253
e65bf486aeca570f32b55ed11b66857f087a6075367175e3141bf9cb6d49fdbc
6777ac404661267ba656b7e17da48f70c76562ed5bd1b6554ba55d2acb907d7b
d828b4626edff6fc0405c7b05b32e4a8d796413f5291aa4998f2f75eeecdd9be
cc880231c2489ff0aa1a9d837f8a6d8745b80a9ddf2782971859d8da1cc76e27
dda5b83c676444f59fa99952a1388439f75a289f0e4b67effb6f342e3c60aaa9
dffd4f796cb0d1722e826f5d43cb252467630c1cfe1f0c55f1f1c40f8b39de89
2a437bd113f5056eeb6703812668e2ee2844b8d4c7771f3fc1a0594da1640034
3665e014a326f652c77bd5c7bfed6ecbe320a87880f182ccfd0556450a608b43
7c00908ae96ff7f04145a252b1d162b703a4ca2d900acd0028a10b3452c270df
1b41116e6628814f364308bddc8690ffbe80306b12c1180a426414ad8240df92
79e5a0c497e6b759b5995899d37534466d279b85967aa890a60d3c94c47b16f1
62d9a4589247cf609a6bd05c7dcf329e0c38548ad02ac35e7c054f458cd2eee6
f1bfcee38a6978aa7814f979660061ccb0847dc6e35b878e4738ba2da1184ead
da20282d26b08eccc96267c2c5fb382e413e7006aaf167f979506931f094cfe3

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-07-08T23:39:58.790298+00:00
41754540283111836213822981642372976010812090157218
59489427248560877038123697700075853295818826385358
55771610143477968635750694541712234520257138141178
06464749598842723305855751597924313979025961702729
93392792750417002992676780984986084530122813008795
10111553456300640414441227063698918111211064257202
44949163992432176031797159127269889968184921802358
62422363742492729845163359949800505497857073419358
32905450481391526426682553544135381084431224067884
93520935710002383141092260728980907730026485680255
67955049304385301183547881641295543038421695203901
13714775389609092180402900337141315363665732569069
68744595274408547414899207133848969963969216551699
41377378942258754908333891231656529107891404736027
17172391402064878146279501210097190416730880011885
61468528157141651649020383250158023650187025978199
62752326837196676029569770020706112259379835758766
22928738755160430050743257950361487185073516211336
95315431176748640156367891177689662200821452101306
18846335026685894073916469323614516741585283112611
66536771214566375894467312799220754716041851634457
36508472656022090701749733567158768178852021332579
94034713841363830127733010817953857211072661300817
01862640616816425863177234882763161705974677292459
59339009120341314485239177729629025076454512448851
38144562972382268090563324593759443093757688396199
07861423552175640272974709243094896657791276867309
63285949364358759387591702544462983834870562079377
86219757624125636492786318423115836887785748491749
08190500294935554550446234977762958241390328834991

From the PIN diode (digits):

2026-07-08T23:40:54.790888+00:00
85577287666634607429477806597009721989804382486802
64326333318279948057963331028380092916051066556708
65315389727524474744661917168520886271879585859778
96341861608575891559779412421323412480122409925037
24326227375369278364230823298509364573179456136211
05826351572227774011964551208611846455331765875508
71056020125269998574625464671374287711192860801334
14770776032192423891342857912650733487034544099963
59145014614707519181069820776895213881575186546334
88855555748018974153322190442601098278532289118563
89714850825692520981667538263462809896077117636939
00449895582362914728239396548523026331475287973947
67597230704936257052456468684655604222082030882703
73615738660905163992281913294141018180488113332696
25720198233155372353332831650872061532380827566527
98499056899166403558495328436449564880746360148968
99791638743963296801181390169288073134230968666827
55660357736750704230839134748715508194270233270822
96175413172027097388031972647097382366868325644312
99019891828575659342442523408098100405997691506850
65638245707352949036024994725970265731273809356984
10573930512489289910396584600300685969538261563257
90405914750311524660967069792108761446301193673736
03991228311285961539573742672319051003032938044068
84991931639360897761000052540120633882992399911032
68202830058669109639672400443811656962827798830364
45441000406111528294122765171002402979546708893444
90284807189324106600207330644621609651838981538853
17527009395533502268446613604896232298648846719654
07922550581256843842959424057969409138052070202021

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