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-09-17T08:01:57.520035+00:00
273834e5da4b46a0bdf0c89afa4404cdb8bc02a0a44e01e29c4a9286a02b879d
2a87daa5c0b6b5389c495cc2ae2d82510542987ab1ab5ab121d379e211c270a2
f6686eb60b0d77059a0b5517c9d5b878d8cf720c30cd1eb7bfb8a5d969688078
cca779afed4d6ce6a18877f9f014bd4e94b29553b5ab5492fd2fc42aa88f60f9
515da5074abdb4488c720fde5c5f17ece05a0d01b4f4667c4293020e93dd20dd
dcdb33aeebaf3caba31e67f1f49ec5a0e7b718dadf6dd754b7377361d48f4f88
5149d64b104ce7bc0e5af619578a55e5e1417fc62ff45f4e37d98877a642a7e0
828a681059630b8b84b71cc6eb8bffc90b58f3025d817090dccd8f7596da1dbd
98acc3b7c8933852f55309975c5cd8b78bd7e126f70c4395a9995051c85ba4b5
3effc568cfba2bce8a6b23a0551e5355e1c2ff430b3d4dce059e3cb3483c4efa
cbb8f730d3ad10080fa7d737bdc75303379b23e5d9e9fa1b3096c175c091c657
a4020ecafba64a36e03b008651e6ef7a4f975eddeba81cbd2a1378ad007337e3
58a656b743d38a03eb2c85822a57f93293d0fc87925a408023830403590efcba
6c2bab97d48083b09849fd419b2a3af613a9a07ce1fee6a96d93d2446d7c11f5
74d18906d51ca5ecea0f69b5635c7b30202f3447ef5e52d01e38ad1d82d123e0
20005f1957f215a2154f30cdc43929f76ac39aa14b4129dc5644dc4cb68eccc0
e934745d9a27d9af2015d2da08e9d455650df86a57374ce0c2ce34556c288686
3a91beda2225b924685b4aaa190b1bedcd24f9b23f003d9eb9fafce4e1b013a7
afbab19dfaf29b1c829b9e8050964b218cad2054009781cf02ef55bf88761676
09dee814f8c115404ab692fde31f66c98575b30d92c6aa0d751ebe5e845d8556
2230b7b2847805d575b5b11d2fb64ab0d6a99002fc1d511f0a1b498ed3104941
d1d6a59b492b9270f3deb5d0d14d2606981f77ec1d8af93cf91c762fd24c6293
c287323b2bd8a3a5346decf4f78c277b81a81b41d6856aa18b58e3474d486848
0efb54325761cf5d8466a33819afd196392bf5168e31a164df6091afd7b54245
efb3a2de2a18b02282410d466c04296ee6e3f3456bc138f01a2c7d53f185838a
719e3fa188c20c160b164403e66b83e9bc47236fbd16f0035547694aba6c4868
d79b82033284f55713e229b2eed265624d698a3d93586caeac6cbf89ab701926
cd25d504ace1bbb215f9cc73657d830e66cacbd50bc675b68020b2e2f345acae
81326e8a445ada030ccc21325a6758c4b7c018e5ab5276898094d0c68f13e4a5
71db292e62ce05e14812e9115f02586a4c382c65b597ed19c62e233b5805532b
112a276a9466e6f81aeb2f25e274a8a4a7adb359e37a66ce616b0de038479ce5
4b05322c2dee1bc67fc46c7664dfd18545a7a8b4b0d31f2da58101ddc7f11ac7

From the PIN diode (hex format):

2026-09-17T08:03:14.520031+00:00
3009d3e26a7d772635d58a311cd2c829bd9097cf977a74c308a105e6dce5519b
5339912bc605c6553115a462199ae8a56de728dfb38080cfb93ed58f0ac6d606
91e0c0d6ad951679ab89b87ceee1657f965a82808e8aa9b4dd9d33d311a49405
be9700f4201375400d65a613abfe608f02b7d62081f6ac606b3037f5ece3234f
e8264c12ef376eb2bf5acaab25b2a3182c48dd319e1f2e03e824d5c0b2a4a87b
2b4a6fe3632349383b18d1d71f8a80549c7b90e357b15b0afc3855d983380bfe
9143f9bf9c9d1a32b32383cea324b7f3ae4aa22e72273648345366c8dae463ae
07ca273d8d2fa044db28d6eec9206613368fe8b85836b98e8f51bdc610d1c5f0
16a838676d1b130bf563894f2063257020f447e963b701fd00f46c23c8ecd9f4
84482c80eadcb7cf5cc2b2904d490b4d0755dd3dbe72f79cc9ec486214fffe40
0e2b1dcf1dc1e4738a93318753c893150da063ef7ded9bd40cefb83f2735f57c
7c0bad15d270b079e3ef1f60485ec292a7888520d462952b048ba58a82678a21
5fbe9701c864fd1ebacf695c2278770d3c3334512d85c3769b43291ab3ce79b5
f2053c95bea57577f847d94d22fbac260301c2c8326825b365c44be69847f19c
32e53863802695986571dd7f4a6c18f3da4a6c0f042fc1e7026863be5bc9f7f2
1622d393c8485de53ec62ecf219c5ca05b2288f0a6b174d9c50fac78093dc704
eeb64537b807e7025b316173f66bc792e9ec9bdf9a049b7b5943c70e6d917eb5
14595e6e6e8bd811b4525de905dd7b50d3b525b993ff1dce728ee0eaf35b9200
0fcab22255ed60499fc4b2bb01f64bf7043a623b248067bd9cb1f711ef7b6978
c7843628be5102224db09d7ec490a2de0d8ea674d2fa20f473b91724c6ae6f68
6c7d8a1d51ecb72ec5bb2a5501fa476702433e16f025b5a8e2494c067918e095
81ce9a9f03a6793d7aa0b8b772d8c3c793492c1a8489ef266aad541ba57c6ef4
708816c5d0393bdd52ac99393695ac60f1ea5fca8645ec227b08e8b2abea8fbb
96809707fa76e30fea8d29976bd2a421e4851f22263c8934e283b38f04e1a054
e1f97f44ebcfe1933a53ac89e9ec736f0aeabddee1352d28cffd5c2abd857d8e
53cede879f171bcf70ace8aebfc43deec18eaf0a13d818c9fe581df4e087eabf
3a8d02f908525f61c88424750cda0535557e3f32ca86784531d44479c9dd5287
81981ffec9a57219c3651fce6701fe97207ca8801997ced32c45814ef6d656fc
c516e6ddcd665dfaba06b1413c98662339e7fce3590307057157b6ffdc146245
3027ec074179128cadc6c9a2128d6a47b22d632c88eafd5b996756a3a66fa42a
31a68f3a77d993e01fbf51e3838fd6db05583a4f484ba2bc4988d684f4516382
eb5dc02fe9e093afd72a305c50a7fbe185bb8fc94fa2126792c5909d72b41a6c

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-09-17T08:01:57.520035+00:00
39565275706089546804848802606478015674463460433557
42356592828156567392947445308105665222777190773321
17941262041082111319055411852384201412483083918465
05042820672175770861361920897848784983817184464796
42684396819365077489807240141592952390130180022466
47021447325174756071633003589760832409848355159743
79368173751676881490258738856527984795785536196666
67303804168999113932832898391188029329124443175029
89527295834756828309519292833938126749695380819164
81629704864338073560853083859467116177055860797260
78844873160815675589998303555535274850931792459887
64021466745459003481227951946828894219207300155588
66868367380344333042875047354690642835310403891486
08437151283176527365554258196960246909476809241716
37062865150581999223483247527194823056732930353200
95258721622179489657410695546175654186687682429252
16935439753221088501130687557694528508403434584590
34378536049174702511273678630061588576196775867757
55283055582880507533407332840051290285913618221809
20932164748246310233177913469870131730909432933386
34488378322005178177294782747669440229813110277342
16736565557343461281773806523119293860281847769847
94355059436365520940392329682765330661398871777204
72148450879793320263562575505743224249610096457581
66697962422476343065137008044110690793562644258333
31381358636136941222112268030731887135118922038571
05748608720455300350328719417801987705386147880874
72089137711225383704728778211501253114021198178228
32786972742950103868900312335090038896839224718218
37284898431965134146980572181795028806765644018151

From the PIN diode (digits):

2026-09-17T08:03:14.520031+00:00
48090625193853384928418944515122169508610581558357
45439805988549216498255465094079282885624310980645
92734922217137842401275090302842386980575117644805
90510032191764130166197196430283322972960748553579
38761855107891907137786324447249583146033692786468
23437411993573565924313828845623448777911056853156
11456791565726507935316336837474624614395472528302
99740739614147606840320219544384885485424381899816
97226856030927191199377932993712327199830100083532
72442883929478447773117707856190145672982064144329
29931538474935834721136099255512846339532424117321
12762131967294944667363332984943043965383003383395
90510100308605923420191360515281453395185567412679
21810560499065171971773472380301945004377901967552
71565056992838495201132774082474081504479302049990
91223447729362984633569260913436667716971572200961
99048269558407029149971507994655540455238967991409
45268120899410103917808293052380813785472914429146
00157834859673599678870175045898593628038956771723
05209932544090810234777657269644621342661632158523
36987411040825382981834697874285017103026762223781
68737606212449295459036621612260848314959947734426
32373806738427652410123622975759827253575449729695
34693423087871438750285107181541415107643333313438
60375231794304608427684758837237151110895345409242
89332542833559232712727491966193427510192488293591
58410208829597323617120553852663503420694968218235
29523165142595013103015132246828255144692978869722
02938606776560520235578903070513878220986948390765
21184073986218410671784599443691530386636611644249

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