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-03-09T17:14:57.653366+00:00
b51fd30c519d8f5c04d92a99e7ad90cc892eb0833237df94b61d15af21967016
c63be150cd6618b2312932bc1456af7094a5da11fcf47dc924b8abb9466451a1
10a6848d2e44e266f22b69ee82f814331df3c98731f7036569e56359129a7325
3fc71e7a0de62bdc1911f6b7de85aa6736b60b8d3fb2e7558f69eacbf6d7f1f7
4dc425185fe4b6d428d85d94b3c36e88a623f3960745b67251d86e30f32a9eb4
40feec5fbbec70abe7585d5c86ce1ef1672e9256bb9069a9ca84d2e359f02ba6
8454114003a2c766dc636d095a9dad2295d51670c91128e6e1fb68d32c3df79e
885a11497c91fafba05dfd9f3426cf15e453422258830069ea56011f11e8800c
90fd8a6fb08da9d0a6e385772a7e53d1e22e1907d7db9992b72a65c74689c7d9
a590a48fed8c87cb476330a30055d6cf39511c6819715db721b6b90153f131e0
b926b2d8a18e69fe2d9016f7b6035229ef8436fd40a8a3ed9cbb0ccdfad1f298
4109683d1a35e213cdbb410cd48c73c0a8ad144ae420df4adca89926f10a26a0
c8a20c702a77f39baad5d746ceef1339bb38c08f55bcfe9cbb0fa262336e8630
01335c2a48b11917e981a96f707382935db7f6de89236d4c724298565ff74c09
b05e01cb950a9d454c58a75cde551b4367f66ea23164326f36291f6f516869d4
8c3e9e6e9869413f6bdf444055909d6b08461cd2c36ae2fa242f53cb8f069eeb
709f5cb3c7378b994ff27dbb1ad44d6464bc65b8c108b414705b9eac52dc078a
9536d0e2e67c6cee2340ca81ce143ac0eed8ff832be681b83e1ad9187f43f373
f9773c39b5c421930c1d93ae6c544073b64e751e4954a6bf47cdf2519e9427b4
978463d6620f9cacd08bdaf253c2df96679d9888311b702241d2b4c4e608dbd3
73c096600c59b7af80b69651d0972baa871248eb331d23a8e97e9b62b60f7d1c
faa247ba2166e93ef35a9eefe18957eb4fa2443eda56cf53d8669fb82cbd0758
acc5181c485541b5a2b62f8b2bafdeaadb8777a9bd72a19c8ed3b9af6175458e
efeb20de16efb54f862e392bee39c3c4c2feea9e6aa2351c5cbd167d4e6ea4f8
b6d8499ccb80e3749c52aaf2c2a949e9ba5b9d0dc202b9788ba720645e1ff37a
5eda51ec1b5acd0f558040e01aaa6ea7cca42b9854949a988bcc9fe9ec9993b7
9e02e8d1d11b658b2cc27d2f7cd12b309a98cafe6cb9180409516c9f5385cb5c
25b77f634c6edf57630ff1c0f24323fae1952e7c746e4076696b1032649474e5
25bfa4f4fc55c6e411ebcbb987e9edaf7c05acc0e7aae1076637d8415d86396d
39f62db75ea651c40d34ffd3daefc56d3be4ada77dd4bd80381bd49a7d7b7f59
e0c495c54b1b5a92ed0c8f57a1792be5f0d94ad1b524a469d9577a758d85349f
c1921df4694db6e8acd98f8b2b19ff3b5fb54106f9c68d7c3eef722f2a620fdc

From the PIN diode (hex format):

2026-03-09T17:12:35.251948+00:00
4c3eb9fdcbab3b2726070da1ab0a0400e853ad0b2de78f2f5e42e4b1a02e7bac
3ee82509f316387335e00d0010b7332b88c67c19c71bcb20d46f1beea01dfa7f
68e18f3d73135f56592b506edd7c809c7cebed6c24c2bfcf2e381a8de8fe416a
ccd3c28d729f6985eeeca41586a66c77ec6b3c8fa9a21080e034f55c0938f912
951257345d905ed5589d4488bb3031375bff9b6ef9f725a6b5d701936b02168a
f2452529db603f265a6586c0e32e50e2163c88c2d35e3845085796e564fd9824
c1a1527f8d7271a3969b76d5fcf2eec515a7d5bb34d8a175f8a0de8262469cd6
67b3f2d7d17767ad7cf2a6244bdaad2351b307a57b39684351c0cc7653bd2f29
ae0277ee54d82686bf224e54c770b8815f3db0112194a821888b22d08b58af79
d4ed3835288dcb5e79944f5f79ffc31fdabdd25a822926411253227594fcadd0
00b62c1fa921fc9f7dc5e8f301bb16655322d1fef3998bd0f17229687bd2b89b
ada4c388318c4d603dcd4b7a5197a263c5996f6beb51eea1e67ed0ca0ff8261f
5614e9f19beb700c4fe2ddda36e9bf6f6d99177f246160889b363dc9d68df94c
c2b62e49eb76a8d5ebc83c1b4853ee96804378ca7c23d3053e178c112f4403ea
3325bd81e47a637606ce94733700fa4e3c34e6dea35d7d75ec99b6fe2d8b9847
62ada5f98a54ee68ed048cee799eed21298089398cc31241fab8f9a11e75663e
74b33f3e2ef9bdfe97c80fd64b3af211d7eb9f9524f7a06a6185ef4cad881db0
fcb4a01b7590d6c17a152826e4e8d951ef8231d72c2c3ac2820f753ce44521f8
440864602302b698c457d0883be3fbe6f572c5a828aaac4319a6cd9162071264
d6f492157bff1e110c66652f329899c74331518ace60bf158ef02916ca8b84c7
f79219a3edc667ba97b63c7dd8fc5feb330abfb7506ebb62b8f05d9a68256dd6
25cede331476f93bb40320e9264f0f117b793e8cf8d9408caa6577e32a482720
a4c2003f56fe105066fc0ddc7bcbedd5f3f79db341e28fbf74a4c0b6f6530704
5cdf08896a05a11e8963a8ed7a875be6555cb255abcac9c3204fc0746350aa08
54ed11cda0daa075c9e944cdfdc4aaf282c3f820ffcdaa20971b658d21813fd6
573089277055fbeff49cc8d09686f046e141221f7bd7fd35bce00fac9895896a
82a1d2b3eed3ac1776759b8ee4d8be4eebf7a7c5d61c556d9a3b423e6db4ab83
cc25f50544392b2bdbe573ff02ef1fa093f45af38ee47917aaee4f03256869a3
8f2741a5cdf4371f887a49a1da55957389664125353042bba826746423000b88
a97cff4d5db256f0701b46fb1617deb9e73e2781885ed7e9eb48cce020f53953
73999af70da1c919cefdd86e13057f372fe431ab3243944c3e226e0851a8b513
e1ea837c833550ef60aad2d2f385d3f3d6c34cc217a885b26ef5ea9f804ab146

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-03-09T17:14:57.653366+00:00
81311281574392044253734437467631505548822921753350
12229859800224784941508820867512486517253684718570
00816116663241466802430530205129354903010599891854
15376399302213432517833370035482114163788543057796
37249582409348799510366635500769821481104842588064
95871271889392343003464686874405693289436632841764
03629902990909905773344922121740044461583690177324
45609359523821836634883100058601311728124438117641
69663319422683462507534683420199703799654464434035
71994863008557812804251393833382850183498538786142
05454422820382413254646863568712526509046126531987
65124015926873207432746853381038606212124219557070
19578756924385885687156298511034480151924272772523
29691112153047938337350976146652869576097694014910
57697688679285276703106249005011544131118104054062
58105205656307686485445707087028950636478343065812
59927999553953792587267700008801849308802012915872
82073849542408356429205892314329846226242767151960
57819633471229477408846415827817307384669171815848
39805132999815567239839450035752364927123465809608
15925096128983752882508151437035187251293568265598
82152528627186330262905837877962686286830259844489
07887297242872856581628247394375703519698914615642
85759717694232228179344657435795969458066253289289
22257810648273562816568270946973869157139402852039
67320094312294812790158528642670106764435284485452
39595347835802270139449425472443485452088524040981
08598333923783279976108799159267354946241610641805
07165000481637916485981785357524057292700702556593
34570957458394668196135297095973672589285627542523

From the PIN diode (digits):

2026-03-09T17:12:35.251948+00:00
76628571593938071361711004008373114543479466776046
23726237092256155313001683514336982425992732112760
29270443611519958689438010242856240836949146562641
65069441145905336421346608190760436962162852920956
18491887529344948857683687484955915510376681014707
02223869374196633890013492468022603694945669088750
00523693618227411413635055189721678752611760309870
56037919037324663675733581790765235704678192188389
47417402198438349134788499128429956176173348683336
39343988752156534041942148799521953189903041386518
83341748730082443169335925970187220183345339144104
23845573649536494077966175228151629997531107816126
15383186205512127954911109532327369796365554614176
94824673186860277283502867202435056223401747680351
37892922991806481555007860526393251753824539527198
73653884040440215833412837574095186584613017026216
79636246895115755817594936600697337673362976806027
17449322214038813049444458943015176069336808009635
02825296873659149768407072672566459807180046212330
17120201475052539967498138969121424122393299462563
98038651826025955110918380108798849354043709375120
18598003323879151723216240644070011942723932649400
63861680021323577965439116649282830704920837060561
30379968223591859278857195327992169980700884176060
17689670309532703251270141332963874837391285565034
70653431235388157252493706306179722318175542907867
97288509545966620980713137056857434315023160479042
21237079033704056343396565553136227361854915370265
37534866876838160035001136692477937886122770222385
62392936947232578315535413612510190527554749715067

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 2026