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-10-22T11:55:33.803315+00:00
d018943f67f07f1366d4304106c2b69ce10e0b982ff87a0baa96f35f408c2bcf
c93e2d0450558a6ccb810a98485befe209ca77d7a109a82ee1bbec0a95083e66
c9774d4d560094bf2d4c197995125cec931a310cd32fb3590bf89f7a3d8add8e
c9197f5b0f9c3600bd6c5436939fb08cbc3db6d6fa393b403f39a667b4dab978
b64ff6b5fb892d1a697062b0ab7dbb97c9605846209131a1fcbc5ce3929553f1
f1fe2c01795724db30b38fdd481660a15182cad008384cf14345629173cf9656
babf9f19bd914b7c13db4528b257e17c9d83be2e091e50871e1af39694b68a4d
9f1cc698554df865d13eb9e0439f9f140ce61502eb3c905faa2047c20f720d13
a94ac034e9d1c406d9e2298e6e76e436b1a1294970d1ee4b3cb171fa41cca371
cb6d2e66deb354a21489e9edae66797ecf68ae471a559aaa95475bab31d461c3
ad2b1850ac8a02bb3807adffd4f9da82f96c647b6e5952c3ccb5ea8a9fde1072
9335e47c94bc0844865fff889cdcc8f3e2f09171222961389a2a6175d95a2216
5c9055c2e9f353f362c96226d01611a7f2ff26397e85ed711c27c7a34860d84a
33571b73218203ffe3281af2adfcb83a4acd7e0243267826992201bcb35b8c57
ffad2a36b09ffdb3d5dea7518b13d0b496fc1f6dc487e0df5c6c947c2a922125
ccba5870f5566a869773c2a7ba7a5a83e715dd71796284e19c8331b5a4c84041
d8aa5a5fe3b9f5e490fb14ae7db4bc0b068f3dec070f1e8160e51bfa830ff5a0
95d9648e38e57b14b506e6097ba6f6d10f5465849fec781f3e71b805525829d8
ca72a3bb590376cf8add5e58496f0c0089a24f876be6c17c1842e80b887c2c9e
0d0738d426baf540905e5a6ce19966743ab7e4556f959059e15a35efbf23583e
2d6aa3da91513c52370175591fa42cc88c63486476dad9cb002f4ae1afbb8567
22f43a4fe367d6a9318de1c84f1dde39d489855b2508fa915d815a3e2d32196f
ee84cbc390b2d4be38ff4e6ec40bc7ecfe58e995aefab31de51002b6da62be09
3f4e4db37c455b952c25d76b860f86881b64a59e5b6e49854738a5d57ddb9735
cb9acea0935f0a6e635c6c5b502fc3b389dcd71f54c4c813ff07725d3b67807e
74aefe18b495f05dc3744d6ea1cb33ee066771d49433ac10cedfb1b198c0dac2
373dbdeaa8c2475ffe6a9b9b8a1095c0fe9c288f889180a21060acfdcce152b4
842a826c1960e693b8612a3e66df4e766b490b97435535d1634f21fda7853986
ab5d4e60622d1ad68eb85812d1840e6579699fe3300eaa5ef53bd5b9a704a75b
4b412594fe5749a821f0bfd2f7f498354dc3fef7d6c80d0638f44934256d7a9e
5a147a0ba9197608ae524b8fcb2adfe0c94c04b7b9053e13fb5f522c0a0c3a15
f019e95a326bf0cfec8deed6624c481ff24017bc27f4732eec2098502c591311

From the PIN diode (hex format):

2026-10-22T11:43:37.201414+00:00
25634d0946113d7aa6d4f611cb224a620c580d8cb71b5904fe6c5c1c0fd254ec
72a8ed1d09843dfff83878596fc01f8b6a1011832b6a6efb58b7b1d9a0c44150
84f63747341da9cfc61ace8a8800938a7d5eba9415f8786c8a6be0769c0c074f
c3cebb5360f50ab83170427f4312872f202ffdad1b7e2bd44ff40ffd0e124bd0
e175e85cbf4e383c891599434883f1cbfa12e15c3ef10581d7c89f6cab796b2d
79c78b77c04d0151aefeb45cecec8bd53f712d6bb06561fc00b293f005a349d1
d078e58719dab440043e7527483479c542cd33834c5a08d6051147a7edfce360
d65eb7644618cfefa5623c31d7d3649e2053fd7c669d9d9a3b1968b114eb715f
0f8ee0cc515a126788aa4e1ab858641ecb8ff9a57f89ff145fa9a6a3f997454f
bdffa01fff2f4505bb9f273e0a544290efc5d017cebdfc1d9de552ca38249494
7a83a8591410421d51747e7e4bf6710af2c1f91952b7c52f093760b92a668cf8
5ce1c57335281626fb64df045f060435bba58433d1c89bb65d343f40359a108b
e680f9cd3cf85e8f116a9e905a439c45afaa1a2457624446a876819b6fa47774
42fad174750460b99c8dfd405499af6f59fdbc47c5562b059070c889e878d0db
56ab07b05e1ea707867740e3d34163afa2c781fb8f59a838d19c402454cefa94
1a55e5dbbb3c7750d243b991fc40ac415e4382de4debfb95c348e6817e8ff38d
120dee0e22a8fb19d26a44f3fc8246d48a44aade9979f1d28340fafb11b33d98
40f28894b5fa12ebb5a18545c4ae609712d15753dd5ec530873b7c398c793281
c0bc310f72057ce935cc9d319d21f02317b7f186cdd21d7e00d33b3a2df4554d
9f7b1d547a69e6ef7c34c3cf42299908b2270bdcf25a4631ae1c1941aca95e71
1fa44419cb999dbf186910c65e8dc43a91719a974cc37feb3f3dfa3e355b1e85
d6c2d5cc91717564857d15fc8a278961708c1437c6ca4ebdb6a2988c188cf6df
d46d679b19c61a75c2778af6a6cad86c40f23076228a6ab4ef322921e8e53402
64f81dd5f665218ba4f2dec3fad9fb5c68860f47e250657fa5de50502f3c2580
c2e2ee8cacf826f9c413076cbee6094b9b7d3b998b44b45434adbb572dcabf69
524df1acc1026b49ccbe3684ab26a0a6deb5f660f50a1e8fd08b10c14aa82bae
a6c335456aae950a63f3ec432ba7e64560acbce4abdd2db6312ce3a12678148b
2c7255a85c6b24ce63631c50c4cae2bb3ccb9f1cb238618ab95d9b9584e4ef6f
64e4e768415b326074b5f50dabc79cb0cd53e66087391dd34641c4e799a05bf9
e9c69f8c9e358e4225ca4f86349e772e9529913dc41f061801f7202d2e79530c
9ac951078facf5e33ef89e1669775d4ac643f55bacc1f8c0c673a88bc4047d85
f923b19adad27e6f1d71aecaca5062bb9c73e5261737e47022816fc80f964551

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-10-22T11:55:33.803315+00:00
24486303271902486506948256141152472211705095644043
62450480853808291052729109196109684687104908620219
77778600489145762521491892472649124779891159226138
42252791155654008908845447597640886182575964635766
03808520827981374526051298767125875196887032454961
88924649834401218736487943722296618130085676676998
45155086869159258945752419694078872457319046093080
35302650488238775928985285770162856759592012210260
44957032719415141319697492529606414210185477614173
12756077136563130946027984622037740221260474712685
54704971917149979573432480723802875607733008002310
89829581385916144753244888086834953656451334419756
54429717903422924485948398983822176738572633132839
99637296745187271533300340267384587426026738203853
34018879914087734254765979678139198050310996359208
48244246333786881286063451159467862290312113219832
56314981646465709095854420742580881106436107153029
96273115604900425623208106092366158401325920316213
84058288411463878903183894887311120037627935079324
24661136244458130756388664449490085302165883851149
44899053913588624506634581608255011789316444409972
00180047747587330334587903694941792957373391370845
93299062455025113295447890567810961199884974792916
02829890096378777924699149443707341534362700655891
10733371566525515354604795101099920891804795793731
84961907149359032826167424804993951677106151060313
48517216777752929455618968947195065555381649925640
43364528621696728280324230082596478497426202781807
73115167855399793367335734719378969845264284881832
14012105594814709459856704679175653748877368339152

From the PIN diode (digits):

2026-10-22T11:43:37.201414+00:00
37997709701761226617347498128813408327890408922815
84146829093261562089119231390616173143061088837760
96658032557152296998263836004738259486482120083807
18561207799587839610844912662767183547324773272643
79151418751792917856603721536772311892620529590871
21074521993919927701817480923963134507760197007847
05637320352580640462173972522197665131769008051771
67969483007024659860490058328324025757545925047720
13951542819018033670782684880030436527372095696663
51697989603147690587593962108466449723892957825636
48482231688920166629811626267513109325828397470955
96854202409297155340223800049506045387653251558293
52636453541639286094431706584490675669757026368798
68706818295511641916661617049685564164845375118988
71978643054412372086710776943067073419646599756299
29438968565664368448268587601980678545647265946730
77499572292643411813143468250668307038687053213164
17796152643648811881613369967496511887839497483559
24574021502992884915140524535749573335238334292600
59584585775923298422052452956641530878391190704974
28256572699413316468255357912405169894419658451354
51769527636162539130339445131700332521383937971240
20559878898262524024400903552598261794193866086448
18343806805041335202002901333964959204341571800127
65808047603728944072389619070890097555255953396880
84527387874591058277729302077390543271386066819610
30433916937468437466955369067449109967436769967288
71458249446138202039441485689207369999288096876059
28785697388593554932110004659150961681137199567683
96355729706596536091985940585342663779345258194649

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