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-01T22:27:13.780952+00:00
9eed9c6237438086cc487096bb21e944b93b76e719147866245b867266c0fd6d
704acfac4dba9afb39bcd1bad9adec6f282f52236fad6c116330857e8c2a8db9
3ec7365aa3daffc2996c77e7facca9ee91e733f5ea11c60ed7f085684858c924
c10f373cf12bbc4a0bd9973094e0fa00738e1b408c859819f060834c3da9863b
895c43e39e895edbbad3897abf3cd6d8a3a634dad46d338fa5b397461546f0f2
70bed14219b501cc0552a6ee8f54cbf3ed9769588a7e1fecabf7e8e6304b79e0
47b0c298e6a9a2d724a7a6b9b163a3d9c233782be41d58e2e40b835deeed4b53
70580e4d84fe12a67bdcded84ec1d76af385df9b24bfd058dfddefcfeacee05a
fdee11bca5430facbd35d4ad9d758798b1b0dfcc05cc63dc823388e2ee47d7a8
f20fc807d7e5f9ea1aa3499bba4b9f2f601ebd26d2599355a80ce98825265ffc
2c632914a6ee25977c62d6674b77d5eeb23a243e867d24511c4ff215085b91d0
4c55201bca326272ff54a38602e0de3ae46ed0d9636a6f00cd7188a6d5411eea
0dec74a99700088b46721ca0c361d28c739bef227762e67190721d317a7da9a9
ddeb4f6279de6f43b8574dd05991d60fa7048dd62245f04f080a270cda945958
45cb5ce7a851f9e4599a59e62bb051ca7c1c7083218d73065226c627040da5a3
736553e8b7f1d0497d63c26a02ee0f974ce10597782293b64458fbebe0944c15
d20fa5ea4140c1e99ce2153ea7ccdae655991d9c734d1c57768daf8286c6b621
a6d9d75468dc353e405080ef5f6f9c6ba3790a2479ee38665df82b863580cdd3
7e12c40a38f787cf1f6fdeba667eb91fd2e1f7b86b252495045f376689d09a01
5136a17b82c0189feb0fbd8004d25b70d2a8eda2aaa708b8fb62400031256419
8006dc652f65c2faff35ad1c672104e5bbe4c60e005e99855c4ca0887d244c4b
73766678db9791ef5f6882c47bdb0b3f5d83bc71dbe1c32737f2460aa2da3ab4
589ef2493db402839eaad24a12f7a1e7342a7d99a8295ae1cc9c3e4adcbeecc6
9462a096734c0099d18689c69c349d24dab70c11d4e8251fa65b22532bdbe856
325590d4448efd2057c85879aa3cd7b3f9fe88bc3f3d74027af20aef5323c64f
eb0f20fcfcdf0e56a977a478b065023f591b40027f886ee82fbcb60d60270a7c
662c21e9837ceb2ea5a6a218b0984ae410f090b35f86ec39347447f5e2e6f1c2
532e378cb00e4b113af92ade080d336839645a8e4aa8fc0e4e36ceb9abf67707
e2ac82924d3d9d308d523544a3d1bb186ea713249443c5fc1af2bda8ad8befe3
75b1f48faf3b4a152a210a4efb049c1c2408b77f94eeef0d1c397d4420364b17
6a56a7e7b4414781a12a4bdfc387c7ae7a3efd5462fe387f2c76e6e70a19da7f
4d5b093be7a803274cbaa1a8518cce8558df8f0c11c99e10bdb22d8f811fd1ff

From the PIN diode (hex format):

2026-07-01T22:30:15.181342+00:00
bc229b0d4496125a6eeda49a5504171b5b21f24bea1946a641b31cb4fa86f3af
0c3243dc1896339f563cca338db212c33d7ecf2c033e8a0c9ae146f5a5fdfed4
8a8d8d8bcb787a91faced96eba6fae62ab8af9b9bacd752451a34a0d00a2eb71
fe2c1c2ab2aff19e71f051bc00a26fbdaa1e792baf1df2f972825d227b844973
d3c4cca14be304cf25dbfc3b1a4d580ded44b7b154fefddc1b401b8f961c8894
3f8746eae391ed3b2f0b77121c7b16d52a4db3df9ec0af142cca1cd2c212214b
7f86d60121a51db85d20a934a57ec8697d97976ddb1f3a03df2273ef2ccf8cb1
59ba70770e82e4fe05812b945becbc1cad8bdbe8ec1fd537b4cd3c9ff25c907f
e22988ed548dfed5c32b9c58dd0d59490181b778767762c071bc67d8a7366b8f
572134966cee6ef4790e2c08a30e10fbf8a38fc03358082db10eafd4995d7e57
daad4fc09c2e70c1984236366710ef0d0808b7c0ca1c3dc1e08a048f2cdfc08e
4834af2535f79214047dc05bf55b7c600a920d074cb5dd439827bac7d8f03287
dbdeb20fedbb25462505587f01e28f37aa986a8847f69078c349054ef46b2052
9e704c4135260261ef0e9b2587d0c85154ff67a67b5fc3cb522e379a967d44b7
01436f690a84227121f163b6e36c9f2bec10c7750ea5b38da944e85ed4ebb1c3
8badfb2601f8765169573a87c15d2c326cc7cfcbefd8de6cf99d676e44ec6989
fdd3c45d42730c0bc4672e3f83c0826425d4fc9a05c35924e541590b295890c6
8f275fa812660535410d80bd10b57e44fcd8ce13d466d4997e96557224423a25
e63ee4f2786e1b77c2d841938942f77b3f8ab017ba48a8fb1f527904ea3d506a
17d7666f79969a109ba38a6f2520254d6d1ef95640a996c357935635df44ce7b
fa2409543fcb1c78757cd8c17ebd9cfacdf62ba98dff63d059c95c4750dc7ac3
639fda17c6a1b4c174414f815803a0dabcf857c67bf808ce71eecbbc750d78d8
adbdf90123890cd597708828886fc8e908182b0d678deb0ad14892ae8c6b00a6
97a3feff35a7509d5b315efb5e47c1bf53fe734fc3c36c44b0efd74e8194199a
7bfc4f8bc71843464213d0932cb542718ed753a09217eaa9749d0cea3900f673
1b3c33df1e354fe7575a32fe0c074b0858917846d7bcfa10a61ac89294eb141f
fa7ceb8ffffa914468501ef77e736866b0f8eec4575056d025d6371832ea7170
d369752fefa6c9d8c8ac75406977ef7372bf87fb388b2b561e9c59af247434cb
ae5ddc7c81f988d2c96e23a440ff1dae84c644106765adb8b22b694f96b0288f
e6a723354c22ead25987bef784529e343208389f29e2706cdf2b019373628469
9a4cd1addfd1f1424244ebbaf126da174fdc9b618ca733f9b9f6487d6f0d2f8e
b11c6b4be05045fdd666458c57e82242af1eaeee0a0e772a81b63a717e2ec063

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-01T22:27:13.780952+00:00
58569855672834721250873368855918252020023691341402
92091274727786545788867311404782351173081799483326
40424185629954906394530819694551179814330472883693
15556043887411514848001542276440335225963176616934
59379267583794863722916063665209514365795170217012
90662581010582664384510588382631714875217176945269
62366766857799639451204329881131937583128814773218
66237893063355369188901788656715728953735717355277
76059930513671681507266373558675594796308938894785
68123637389544994120663751249803751978583662342536
81287921089145768532275098148463340258109906110013
36666530131669510008397014286095974015553419981344
14294922256969799821116784877789451567044134697908
10391248898869926881895489437681242812313341150682
38983904136563150183837325999406021551760551203447
82688848762115656564935621626785532956157728871841
75303498823366840453626480289511560763211036215602
93433453282618961056353111860226853184073736490495
55023754018154612330922459158928049112686270670884
98640049370025280601470194537328033304879814009453
33927660362536767515180220514595043096231163933188
13953955701062588088587361800231587074186152422553
68419056627490984898605015760053343798565257368312
17373166913483438650854468423287882170607936886361
16022210833598791532148669196420760102638927640227
36104788821396391024024433312446656662247652741644
79953457521671948346554076147517584208135104570090
42746814785485711907723046776157484182536863872410
67193648679726896873391777437559742142331078045628
36088327481328572568325475230686678065712961427595

From the PIN diode (digits):

2026-07-01T22:30:15.181342+00:00
88345513685018901064548504232791337525706665792880
34751250672450515986605141781895612644036238125470
65384141392022451086117498713885861736816374130062
13442842787558138188006211897030214375291430933423
32731596617504375926778813688377842764274350283648
63357045594711191828232242777958927520442894183375
27340133652984933269526526052551510931580334154440
77898612191430052943489188287339315580605992442741
36844195435688138973012983201819989213880367540743
87335250081021144408631416634392518808457714755393
26877379925646129352665454031613080883922861933804
43449242725275375346200425929191249610461307768167
52398699503578158737703705882701435570520636714420
95730578073282581276655338029714553735818403662395
95824655545025688301671105103234133399820859431699
17146579416968947795397338011881058758359393445008
99085703106805379693661512119603466331923000375405
95893665891141884498433995681802055365132889168126
68190253265085143666583762201027199465473766236338
76238672683182210461800623021121505416556338113732
37770930866469509587478653682336098463282017249326
89564369419989927180229599592398618093166579298803
60888798230813881713207389013537125112364036110824
43130341107246744007006651635367805791499494719391
83157995950868767829482554237939992467706619474481
66134283604623691657125700152760513053798790501207
75088845207088166626464820312443456804803026150402
76968780863755245013120517476672176405191514913556
39438630568975361652749324293610356464297432986816
03017384784305795076404367355376348935903282585250

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