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-04-16T20:22:45.595204+00:00
c47568e28cf5f3bbf843be228f0382f487902ffd1379f6e0014d5c0014327ac6
7589babd607be94ec9eae66f8ad2218cc992a1d9868dc821cbc0c229106f6da6
23c8f244cf209269fd5407d1b7cce85892f989a93b44a317dd6421f428a7be45
d54af35a8ec1b981a4ec0bc1955fdbf679703dd7cf703e9694654aea8d646ca3
733e69f539209a7cf719a444753158915369dcd3429e5786d609a7f2a18116a4
db3d41c2ab311f10fda16b48d778a4b81857621ace2ac543c11a255b4c4db857
7c0e2128b42b3f8f94fdcfe0b794594232b731fcf98693d6e4c512aa88beaa79
4d64def77aac1f7e955b592fb8e35a456ac3d9943cdd31a78cf8f097bb740b44
e0c0da09f06ae289b8597b8c099dace0ef7f56941484a711bc6d123060c17b6e
f6d6c393632816b527f19f387ef53ac81d08f7f6c412c9839b50726145382d87
af5d285fafb4e605d090f77b381df3372c4498a938c98f4f6cb08afa471cdbbf
d3dc5208656e73bd65787f4a8bd0832b703662906db2808344704edee3ddccc2
f1cd977a1851f9c903855e20763a056d397205558cae3e8a8624575f830be6c9
ea945ded28291adfc180ca5b5662fdd4fabb2a4dfdbe2c965270dbf76f39549b
93462452e2fee59486c64c8b80a1170ebd0896de62eb52575c225c770d4b497f
b829c17a40cb6712c2ef517cf503f676823bfbd53676b201420464d03246427a
6f48bd65f3a213f89d6f6be6a4eb1e0fc58eaf90ae90f1b84662baf3248a7d26
1f7e17ff844f495c8412c17deb98556174a467537d9aa45401e5f1887a331a1f
f75513f6b6c6c05f2fe9cee045fcc0b8698bfbff5703b07f7ebce7afe72d44d5
a0187b35e459bfe936a0f0262954389090ab620582e969e505829a9cebfffcd5
572eef8576fc4be804ff2b1c875961e0631cee78903c43def7ee487931a01a94
931fd4a4c71b249d4c8157b6d9dcd2af98b4e569bd7f216f2bc878e5edb1c3ef
609131d526836f50e69f05eea15c4b9a7a9486b37fc83152c8948efea5bbbfb9
5b7ac962610a38ee27dc9f9d8a07c51bc1c0fcab07e33c39f94e2f1e154f1d78
178ead85c8430d717b3c1b73c2539ffad5f2860f2603604006c2fbdc67f99da6
b8d427e4f6d1ea3b84186f4d28a250c653be68f34db2ba1f7a6624e3c18785bd
a359e605e038d398fdd00257b5fc8a27a23c5208d5a099e5e7ba06f5e3cc29db
b8df9feccb001864e0c5c28e9af3db218a61b66b55df9f5d57b0b4b9569c5ddc
303a543b7396ee6792a1a8b383f28e4f7718417e29d988a8b7a53950a98b3cce
5090d929d7d35e3f32552a256bdaab9e05e239267af38aed544331841c5bee4b
5e944996d1c99cb17e98a012b6eea409f5da4c91c6208c40d3cf0cfd1db9a9fc
45b2644f26de0c6b9a516b3b82c997abefe3cb1dcd34c154a652b7f52a45acd1

From the PIN diode (hex format):

2026-04-16T20:20:13.397266+00:00
d7edec7a1b351b311e8067721d5ab2004ad3ffce1b4ba569de35ed2510b67dc7
54552f9e18eeb555dfaa46ff5fa57b14d32f4b675a3e9b7a6fc02cf328964b06
030daf94918ab05ff0088b7951944b89465f840e744d8d3f4b9f74837fa4a4cd
61f6bda9d830770d47f65c85c24e8c07d9607a794f7cf8752f9015f9438d654d
0175ef913e40eb47b47186c62c81effe1bed64e9b88f88d2f9efe528e3545fde
1f5e6ed981323b7dd833fa5d278ec74813ee095c6eaee7be8f5dfc9741a501f5
059ce6e83f9aa14b48e93ad7e4c65154299119ce08bfb6f928c94494baf75af7
549d5a258c9294deb5e4d82af7998659a16be4dd2cd7c3721d1c0ea980c803e2
9282379697f0184516bc21de5c38a814a735618289adaecf79a8e54f71ea57ff
069399584a0e3b0b6605641fd289ce5a8940e0a46b12967b3b7daea68877c780
2fbe18bbd4aa7bb8a95fbf74c19d2cd4ebf7aad1e0f2eab2ff719de70566cab5
552d86b21e7e5451a854a7774f1db61ea674f4e89fe0f8dacafac9ea7061facf
c6a22f8858c9ee283b5f7d5a03a5caa61b1804c1181ecae954f3c37fe3170446
e9400b2736bfdc44d768e3c60c62a3738862a1553c4da95afd6be239a47b240c
12618b326ab683d08f8cc432277591910540baf202aa8d176bfd865c589481d2
063f728dcb7ed6bb95fef6b2591039da84c7c8f35ed5c0608bb862326e2f619e
f220bc50f961d003465a8bf362d9c9b60b6cf9d641309991350cab9bb5611a97
0dc7aad4be42cbe661d59a5df5afcb6daa4ed633ef14c93277c144b546b146b5
9edb15dec7781d44286f70f6fc454eeb18471e04689feda5828cb476faf64ebe
8e01bdc028ff29f9213a2d875e62a161b311e3c7ff20c2d1e3b0828c387af993
b316d162a95f4d6958cc5505b154ed74a49dececf325407e64c17e05ddd6f1dc
2af2b0c61768da3a5986ac752526a600ac8f8a80e4d93c458776429c3114e382
0d6ade8e0de748b35571ddb96a11bcb9e11d9992dd3dae46f32b8f5958107850
1bf15025af10eeea24f20479532805f7521d6b7afb18e3ddb54631cf418700e7
75cc9f5d19bad16c6805388df9888b2c46c29aa493b13c3b4cd279046bae586e
cb22f8bf04307e0e337012d2608fc4d95f7337fb35a7895ed845a0cc3106c9d5
40ee7371c64da57758aa8d894358562a78c0992832c0d36818a1e8c397760587
84b1f6f2e92752e1db9b7a955703c28f243bae8a3ab1a2d83e7428e8a5a9d075
82be1550d3235c19a9cacd403b3d4c60fe9152f3990ae388c765e0cf38f14b09
87c801cf3aecad8e05f6a70d1a0fb57e1497ba601a200cfdd489a3b635b61c97
c7e4566a030df51ee7ca08db6cda896c379ab7a1a64761158e78aedf76fc775c
07ad44ed8acf72029e86b709ad6689faa9d98b4497ed8a4c60544f6f5faa6597

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-04-16T20:22:45.595204+00:00
96170440876790344303303544471921017792002050229817
37868996237811383340466134413392944116110966356832
46058407838846376959686323003340679069749042938529
64119349952112611262504801744100086315620557325424
25646817498845830566588734096761292264616594714931
16610772206484248798264297679326379176778487241433
40804363434883488966508349344797187036907021770022
72312649918947849069069548604967405187161168920906
37848923400957722786482032671788091848969323109547
99402281395956265829089618315580149769564535759340
95758005442356295544685269564379087638712891820801
10158901202774393143125498440978283168127894512224
81033394321858050957140585407462383436879531114893
40412693289186988742779044508212115784554770368248
34987639286123148908509882879234921913757327844193
22640318948124031830595418780166040050706622117289
01621957110764301597427544744484709886363825383126
23327973923218932552859716640383255464840136225126
31851982989295476992840539870376272688754568602423
53899154603841845644447198053005053054568746331875
04432835899799282044606772214960264847316499273657
76298782755280058927331143207795964549383111805905
61927554224834792749824842658791859122989710563959
57380797279392710760577847302179292023427333671313
23602715948359341538039664069403576684395932241177
40628098839004777886312202369335338963890556520287
81383962608208605386064184590024009794425433389782
07855993877680858656934858845915500346616879314279
19246526413668836557806939608044419463508542370771
58055738223884674932289175944873505677265260188264

From the PIN diode (digits):

2026-04-16T20:20:13.397266+00:00
22275327493028031429907800742775650553371682259984
85475824818570709565232047750390625522119244405075
06031375484538769508392181487537709532141677416375
59163127646497896948191371923394784007962221792417
47442167410177011745626471801334984429270084433640
84953194102950592551933942997219099210749043935165
65010556635461757258988184414525089182406848869084
57903740464881425334896107449514292814692803463055
50512469228833925668206753973037737421687913870647
53887414591102050031379037646407185023592574663619
99284790248770238469959116935744707813570502818545
34783026848168846719792982306616591297986247368840
59952590036566272404932430849527230470641139549168
04981298631536986185607769900757642336121897395006
82314340965039174545056486027041230734928848290663
14412687497889165732999492963984985010479758328880
97037090399882110865485345531271558197265113997090
66975493750970785120501993688170777081582199202968
40111269782471300404596530408018789042018992404133
58453594986197791799329476304056224779229869957705
88850577841664573764260093260542769823045889347217
37386600724338286069351866564920301306421372798513
85061788852953466174704343898816208027803775163604
21834005822907222481704965350017599325860804055641
36394470945464477760597621040774881034910448261451
12189643969515555367379469604906641513987765198870
41376788864220925340509204246195511805353277398255
22498703944336597438587762621640656917309021803592
25696459617696458253103699015675093501587342056713
26158126205186962632123763825382285199860603133008

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