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

2025-07-12T02:31:43.911425+00:00
7ad4dae4587535332ade53e61ee14a6325b251ff3b3878ea3fb9e11d630ca137
fcf919a5b3c1bbd99e825be28a5917bb93646b26aa07e77b5b5668318e30e633
a23ae6bdf84ce600839831186e91bda911b682e60168af23121a0af53603f133
b5ee36203bc0b5d8561d94eeae74ce122811cae0b3037eae066ef1c2ec1706fe
3ad221c952b36c398d80387596fe0d0f87f479180980618ba0dd38d72a624085
6a61a796d28010253f9eb517f8696cc983bbf56430ab541e6ac9807203883ce9
6506d2c2db1488bd295863d6eb4cbcd7bfdec03edd384c95a1f5151b3784e174
cf667d4d5e633089ca35b6ceb77c5e3b945ad713f7541970dcec64255e5dae67
4ae8d212e9b0b490f73c31c3292ed682901b3153af7c0eb47b0c2226a1ada4fb
cb6b2d241e9d8b0ce1a850e0d9d01abd5f0fe7740592ba89015425c11ae181fb
525e75150cebd55321d47bdafe3c5b7a767b736aae076b328a451faa7a76b291
1178745f3e04a131ab4f9c1a6405647e2580e02f6cd1c777889afbe7b4ccbaae
4ab03343a8abe7c87ff7b9ca81ca3e5b72b5e016db32d6ece65062237858d8f4
daa3ec272b875e9f6c8c679eec841fc593f6de1486825aeac5c82b4ed283e536
98785a5d8eab43361e3ec254fd3195b29a344b46ef2feefddf6cd12bf00b276e
d44a3d56738679a7e895004e7406581fe00b817e6b1bcab3c21a92c107fac3e9
fed6625a29ac257d28350f08c77186eea7293439dd4045b33fcbf6cecdd97049
62162933c5c2f43b01f0dfce19507e62c152ef4e9b0f1c33eceb4b75bf136b7d
60492728e7fc8da72e4c3a2a8fe6e8d91468943406dc0fb12c3839e0974c826d
00dc8570793902e1d0eb42344fca5cca053d0029a947fe6cac6ff8e0c7b8a093
462a8acac45c804a9d1db48ea554f5c2828413a15be5cd64c4f21f6dd1d86423
8cb9069f73d36d78ebd49075b8a81168a1021a2fdf3e184e570d447da73dd3c1
ee94fcf8d84b2f2050ce4bcfcd5e75491a0cb9c39c67038b4382523f946b0a2e
486b7d46e3f72b9464279e7d13144bf521cf507762ba149ca427a7dd94d204d6
80849e892275787f893fdcbb474e7a1878b3966bf15d88e9ec2247e7f0125479
471efc926eb8f58101d772d51546da68030bbfef34d5aa02bd62c109fd9b90e5
8a40cd4b018f8858c4f0a53adfcf6ecb387a7f02f161126a796a1d9e13a75c62
25d3a1f9e32101cee25007d0e052c2f9eafee35476e4be71121ca6f880f56e15
d97e6f88e32ca058ecd0c774c3ffcfe12c9daa18ebf635284f1bc6e86cbf8f05
964d5eab95d3a9c920ace3fc5ba5b59af398b9419ed92034c7cf1e829645c680
6c5951b5a6d9041d62a6c0819ce1c95835e694f79504a5edbf28edc03508e092
2daf99031ef2e96d3dab0416db5cd73959cf5dd615d9db5bfd25cc97b611c20a

From the PIN diode (hex format):

2025-07-12T02:27:00.309676+00:00
6822b3a6ca05aaaf23ded2845a653495c3e88c4ac4266404142f424eefb6a636
191ae5a298153fe25ab4ec080f1e5fa3d5827ab39ee77065ad0d1815b21543ab
10016f13937be381c293a241f5cb50f1b3ae50cc401d1e1edfc76424941802e5
e7949b55ec6b067946187599e026414e2af9581aeaaed713b5d9e679f3f393d4
aaf2d09236d17a3c02aa8039d3d1b77443ccbd6a07981704c35558317d2e6128
b243dc2a17e2b79fa71f4d89b184d8fd465e90e5f7690293475c66acc9ad42c1
82da7c19bac9866093bf1ee3b1a4037d23ee2c37055b829ef47145685c04b16b
48599631d69dc53e51bf4767f92bbe2bf94148fc46d7b7b1526d6fc545e8d703
30ace1deccb836692cdda6337af388087dc1954ae8a1363c1ce1a6dfdcd2ebe8
10f915898cd30299b4c0e070e7111534187a17e396441a2b8f910192c74e9c96
6b408ef81c30a91e890b422c77fe8182212d7355b439aef48c1f46a394081145
fe8731cd5f9339059ef5db3ee215cb85f4c3ba47e7e0ae19a2ad591f0029a6f8
a4ecccf59ad0623eacf803a9dd11933f6ee85beb01a4b8723c10689a36d3d374
795c4ed8a23d463734d17cc568712182cb23df22002713bb9d58373d1e9e1066
072bebf437271900cc64ffc231a40cd6276c4c7fc5b6d1bb23999015a32d4260
1380d084089d9245f7251a947e33387daa7c0ea8716b3304d84f8b9b8acd38fb
94433fd445e54208a8acb0d970f6ffd8101382a7551ce74db5de01e001902de6
e1a03082af027b25adfacdcebce85c5f8a5d49e82712c06ba23cda674084476b
73a1b9a0e4805b849c22fc9c289ebb43705ed66d8dd4dfb8961835cb1256b572
7543062d6d58033da23eecb3e1e16d7839bf6c997e9d36b8e94069470fd6737f
754b84ab5b1264cd805eb37cd1720c35e71adea794bb3d5403e9d1a660552069
a235e064d2699e100c6d9748240152d9e3cd2edd2130a7ad74cf2c7c1c5457fc
f3897438ec5b8171ab4ed53a709bb3a89add9e146f9e2188ac21fa461615bd2c
e25ac65b9bd8f9f79b4f968ccb1e3b1eb0ad2bacf0dc5b511f5f6f8ef791d07f
44b9c71b8b6b118a502d56be5dbf4fca4cbe0bd1c11da027031a03b0332eb62b
7369d911913ea515a3e260e521daab86d01143d96b9579d7fad123c46fb984fd
786b2695d06e614a075f05055b6d61d1d81056297cef564f84c18bfc5c006cef
81272200959c8395c54dca81c7044e215cbbff588b4173a557dd5a242c6ac42f
1ede3c68f3b0eccf35e57ac5ae19f4e1152c714d82852a57a9709493c38d5ccc
46f5b8e366c7e6e308a76dba7caab921f911fe4aad55df296c1fcad5796d3eb1
e3ae1f7a3f539c170b51422ab89bb1f8786005d6baf41e104f8741a4ad817d0c
954fc6cf90019cfc4e0200f51d5040103f3a2c3f0e3f200014ba9047913ce4d9

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

2025-07-12T02:31:43.911425+00:00
22881753514283307499377881595620638529991261552565
79938758309138892387470007387007239186044942485162
58897600315249241045896917823001047535182610540351
81543259928186294874161840177903267406109423065833
82790857412856175013153521240928973960564298643306
97675028163763588123050831870048718430062814033660
01069420368941889976889192625676496121275532160225
77949948375382832494594890198425120037949374037418
76804460499541463044274983752414802312343861736407
45363057391268802689951516054686370184379326298294
17211283332360912218231506740707503869317022187845
17201695620461497179562600050026372847089919365480
86747476516768712785296291148122508098352088633943
35945908400358323197472034309097437831545220909342
71675430629484494978545275704708431139107461861534
21674900781606883111292607277994264693079598904172
37254053150899133467415257646979631273982241519794
59012580269893827855152851751791190725967339404167
46765842432004485206157744565751763009003312215702
66527992056100416971087211998460477042389692287457
29804265849430321961910096310900354085065915092044
17846817046102264762247887136825676193487547328075
94177326128595560303396730826348071046720725704348
00395825192075338019988620566439674804283258373417
20273763877178222420795007933634711884217130461084
29011421700403119152700289989309554438647501433688
96655810562227029718062106295819679298376133018007
82948418901318286628102126113644608899169544577024
53407927980891430550779471496932729165815452856558
32529930305069982808898181660429986692295688534849

From the PIN diode (digits):

2025-07-12T02:27:00.309676+00:00
04347966057075353290015249954074963800042047667882
66542526625221639080081530956330227958120173132421
78216771160111194723299447626580797480642930309900
36482402485585070621702417533865784288267419812147
70465422600270285783166789060752230495858849254697
40786742238359673177377732709444050247719202727366
93302425863496479130776403253544550591305813690492
04770772895049579762819171034390436572708377820911
97690348728454054466512236082593497461546028661621
37400253809212172152242223506826434345014699785650
07644228486930371166441929303345158580577440317063
48081769354995475705586221339586717425627389310041
66645498627203691747631091016484146016045454162192
78626170555224970413333035340039198757885561305816
02074355392500009449641239087627978287355344216345
66961928320857466937264826515625702414681307510479
39553856486763696608687276121619306785287781010144
45604830750223377388929538937339189207626003643271
07156185602891325634564058876712940941845024531886
81141767064509880361626279092057910853265754846405
71151527177532719118002894792414125326674887618403
66968532056253000558161209517236018246334867731644
24288487371656912913717858125579685458201158333672
33702221894490989155557950403059307673437291813195
11424527688599273907173880458690939179769011932960
39032603765146824315051745626521639633713417670749
21359611853220073849109774079505059109971686412486
79329339920008293934004956314997772999047833928788
39651565879036440696473060047653229774252144137730
33428769124847954192708402990867098624708533177473

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 2025