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-06-03T19:41:31.367151+00:00
9506d01ec4299844f633b3189323eeb86546c94a4ce1b8d59e16597b1d6df04d
c1f0c6888ad38763f2093001b8734729493f7e349a2150622aea009e21fad8c9
0fb4639b3f82bf1f3b86be5e427c41688ed0765ddf5569ffeb6b188286d8b973
ab4f40738cd3e46f17d5eec65585229bb4860d458497b890c131472e03ee9235
3252ba6b4b75e19a0d18593e9afcea0ebf1073ac170ccbf46ba832f473171916
bf5d3e9286c530cbb731870c16cbbd074ac4047ed4bcc7356b182068c1b11b0c
d3a78e884cd04f4c96dcd91fe38e9632ab70ed529b14887607e973a8b26fd69f
9cfb61181e3e1c75ead1a2c40c1993f09e249e9d321b87165ac499ddaff71f5e
cbec942d730a983a913706bc78d2a7ea26a4c804d32a1ae77de764e843ddcd26
b25fb0a82315ae492c9d28409175aa95fc44398f22a5fac5a3646982b6604605
1c7510f49fa25d220035191ce7cb4d0c3ac58c75106189662aea7ae6121f7dc8
1aa494b595c7869a6f9934c6894ffdb8c646062e055e8425e9511c1c0f9bf4e5
16aa4658f9882b8e3444a1b107b77f632a4c8d3d83a838f66dbf9264d09cd1da
1d53e4da4968680600a7f58af236c625282e8ae9ab54242d290be55501d4e025
0af86c48c4305e0ef2a47d9700938c27f8ce0fcecb633c7c85219b8db7d60ec5
064719e61359d9995b669855778f66074fe8352fbdfd7ceb882527ab85bd87bd
6a942921a3586b7c59005557df88f14cae01fdcb817279070e4cc2b7888de9b7
c3f9fa8d37a74f08e71570d2242dc8c95229d974152977822f7c671c5c74483c
6f17e411cd2afaca1b8fba1dcd7906c2c0a6da4277079e585b5e280848113bbd
fc81254977e7358ea7dba57da2d14c120f3c1c11bdd512e59350b31e22bdc2bc
60a679b3ad045205b78d12b3edb7c1b902d3bdfb09ef3f3d863054c1dd8a3d58
6a5725410fba21bc4a91ad0843658c8052e2ed03fd4b840a5d09d967a8c04b9f
13dd3888a1790b3939743c6974df1a08b8bbba3b6195073da1ebc291bf6dae1e
ebda00eadd9d1b3cdcd3d56b137c373f2efb3e94a06f6b816c3cc202fb9d76d8
7e9eb3ee14fed34319d35359b06caf6e7ed96f69cc8d00118b398aa7fdf7f98c
81b7b6f048387459a12c8b3a06de9212624b8442041f4eaea694463d50de1b1c
2889c588085da719d793de4d755c6f709466e788f8b354c953b22615cf160d3b
6d5e6cf404a9372a0c18d46098015443a19786073e38558293a5a27f1a384f37
9d19ccf8f06f3b222805cec0efa4b212812d73b15a73466716d61f28c9ea1622
77f54c089ffbed47d394f4286383c4ceb3255d6b96f8097a3090fc80cb054352
afe485a73052530ada9ffa06f6bb36bbc03cde9352889175b9dadd3f3a679137
b3c212b66a46b10a9d52a2bbe936724ec8428a00fa4a8d9df7832f5b4af892ee

From the PIN diode (hex format):

2026-06-03T19:39:49.966527+00:00
5b2e4d146c76593aabc7e74a1ee0b497c9c2e34a35375cbee51f296d9ae3df2a
eaceb75c96466625c1793d97d438f649d7a4793f77595a921e602f28645821ff
0fe582ae80197e529878e2b202cabbfa0dd84486aaa327ceb252a143bd548f0a
9a3892a0cf159e215d8670431b4eb7fd9a1e095e6d38c0767ee6eb6f3f5fc1f7
072aa87c19d907aecde72f67d3a8cfe7220f1eb4a8b3fc75e5a566cf7f7e419c
30afe809587de07480c90aaf07edd8dd70d9696f852cbeef5e756887219358a5
f21c247cc957c6bc1a642a09ab8bb30908ad490a810b5c02bcd6ea6ddc62b32d
cd8d7fc773c6fb3403dbae3cad2a6e5a53a8b553b99a5e87b602f073ab86715d
f1b818a1f73bf16c03848464d105573ca12e074ff83ac12045c2d8af463db11a
51b46d44506fb508909946cf7afa711aaeecfed888e7ef34097cb0d485ff5f14
f414f7cc479aeaff73aeb751d9cce439175f301af66aa25e62b37f07eade612c
8df198d93f2839653336fbf8c46dec9db76711e6445b21e1e0d39ea51599f8a6
f32dcbc39743daddab2539628f28b302cb913760f4c824d3d4d6e626cdeb3e64
aa6a02c0296ba09b90b47e802d1c0011677e1df7e53dd90a43c6d2ecfee29c6c
37c6a938c6dd8b5078bbe47b4916583ff4e0eb88f06622ee1c68879e9609f508
97d9a0d9ed2905612f071180e65a9e7ae23acbd9b2c7ce44e9286fb063e8dbe1
b0e5c295cb3c3a680d5867521c1a180cc7de51acd91f117e3d001603f1223d9c
e604782586f5648bbdbe715b316f97ed503786a62dd74821d11b03e44986bb7a
2aec7d08e6dcb8d398a0db72f7eff60ccd2636ca944061af7b68482da90edf64
f350cc7c098764d3d2d47d1cc85ab214dbdb3c14a9d6b273accc3ead6660a983
ae60190fd1be7746d2f7a31579f0699996c7ba5640b94614284a5c17645205b6
457966407a56ec81127eb16620cf9d0bab286a47f7a8de1674d39a12bd125772
465d13ad7600718a1f30e7fa1be803c7b2e32e0d4063c067d7efc1a38c2d5da2
11a56688f37a34d7a86acbb76f3df0f896d4b1384889bb35196ceeb223cdad6c
53321766d1969d6e571a0928335aeb49ba4a25a78b44ff067ef2d709d1c8a01a
fb25820db4857a886a990bf752ac5bbc4f7ccc1082614c2047bce05153120993
cc04beef0e35a4674e1391e63fb15a18acab1928a397eca8f0e666f8ca724cb9
68fa001edcc512ef476460c458da961ef93c55ae1de2c9090741eacdaa16eca4
f73feb4960d5ee8ad55dde034f2bd46d971117cb62498b0034424e63a1cb15fc
69016ba04148a8d25ce9732bdd419fb7d309faa876b5ad42811af6f3ecb35417
354574e150e6e2afdca2a12aa72d8adbbabd0a998aa6146894aaf7d08d35600b
59037ae569420128f24bdeeb01a2ff014258cfc81978464d762328c2dae58011

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-06-03T19:41:31.367151+00:00
49063096415268517924473584017074768458228923290977
93983638359909480184157141736326525433809842005833
15809955633091315934909466246504421893850507243034
85157179641540112398853334558034136932518444934971
46034653508286077517541324896254149116157223120768
50152325229193624634974883493512228907749604268899
53072432049377271267423676797650314250507112825520
36180715687811595697243062281762961225475836585750
27352290965375319448451510525845550688206738640442
26250067387895766835217473445740644517704968574334
65976300053082967005281716596293340053252877125897
40171697370242221831252664488149993454115352983779
84987006460594323781282815552270708836434252686177
07832799427641613168560991460056298373040406006738
54983740463871843645411185013710087296489414642551
00474039159960243333554183149706712519895391025285
19430207795347892436373971338935890648413363880724
89008587367674012914210714769483364183954155677908
21123645824116214119304724032892167260112317422743
86292106949266661907588891944008721759892937731953
42676525627618156028178918478079303489948896662179
73048205834118798393850289096361344884933861880687
37651586338874457308670140288203753210930903689275
59195636612111575716600516260884878659974907616194
45910974300057276007192455634662486011072908609402
57182658792067258389760875102611054100173957386740
29838272561689614439580646189875326604317874664870
61802728403797360893672547771792111248023679848378
38212213590994080469554212249652018467615134076256
85304765622726567955572511593440059264781829451577

From the PIN diode (digits):

2026-06-03T19:39:49.966527+00:00
91467720081889587199743080519474535592903141095442
83925070023793216151567364216319899046309647400088
33153074282526825220780287136834706339788261678984
43105456466021583393341267277883543009940956921826
11639593074268242507744703683415308068791765022726
65564875098825162810750712051133449094170435334788
65283624879888260042097139790908737310291192028809
98794541279915985203746073421090836881838554943582
02157134139384246159080332320005876061460779589332
69947570617726818009688011810844537022132674365209
24763395202071541574838157239548260662949879270797
44415263405701515496095783031768913358652153664595
51677137579843407902455596363862007006029241076055
44802628452800170326296110679856085598695698398020
87237322886336023428043558500908516041059747071728
90582258789968401176997694496058041388038228262412
99817231172661002203346156042037340039899013914911
51805534664572332703733487224225088452601412385448
64977523047245691400802409350025289078206020697815
72627302966931749625159019706321210553509986866485
70204074922300820582692102642286291826770232571171
40067168221654188918871470931973180013383148270399
78461364999203936340459362176502362252680683116150
77567237875325087835730883502302505710872609405190
73867437673968062609602637301380332236065311827291
88792416309776327188818318094704901453640378194563
77902472712540635168021476850400309718710096968850
30608574290907657022646373963893037943095117239873
39005266789961210501076065726892154365598309681881
73662926798423536916807562614267453886891053386620

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