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-17T05:51:08.063604+00:00
30a27c7500eaba8143cda6b6c5e58aec49f6962e369a60d93ee3ba9df8ffad7c
4cffae2d5513b36f1fa1216401ce251a62c91756825e14455fda1cf5634aef9e
923d8eb062fc4a08c9399ffc6defec2bafe351be4fa182d7310c3548b97e4437
4f25929041337e9df484a777c3af2a42968b3f25420571f2790962e029a70467
0a998d831e3b158b85127880355c8e0437d0987dcc3fd45f5ce827b0ddce1503
c0dee104e805725192b6b8d6c56a12c75a62ed97087bec70baac300b347d41a4
8f1a8b7db3be22dde92c6ea59dd5c77a16f5e5129bc448509cfa29d142149148
32513176e87edb8e9c0e031548bc4b909227bb39b18ff0c4d76484fc1bc53d60
73e93be42e32114be9379d2165dceb620b6714595637812d9f6b17078385f1a6
dffa15144ac60d1fee7b605ce6195a9bad9eaee1c5ed8d1a762402fb74c2e668
22047fca9c441d8b1eea1579873e7c7d08b93fe27ba9786fdb388e921eeb73f0
10e39ca56357218d0398e18dc41f09243fff7c0259e45f3651ac6e26ceedfd1b
9069a201d36be4efc39aa9a0e505e6fd83d3a3597e70c5b4a8b876b8bb189a89
23ece032d7d39968f5856063075c24d52be2936181afd775d90318de67a4ff7b
159bc8d8d4fafd9da7f732660bbc36054fffc2792fdb574df9f6b48475b4e49c
2a1d2214d799cb89b43130b1f47bbd71da107912b929a72b929df12164d4220b
0e5c1a47433b07f4b3ae73c5837b87a4f1f7fbe9dfaa922fe7b7c26ccf4e040e
5f0a33649df1e5aeda3e3243cf8324fe9759599e5af37e5b14e68e3286db28e2
b6353f52161022b893df5cf5733dcbe513a31476e58af87e729622172bd84cc4
f8099aacad1d4b69ee538992316062f822c7443716a6de1f3b958fa30277ab9e
5959a9203b1c8700c5460194b44f35e608b547d690ca2ae16a758e3e44f45cae
bbb0bbcc9bab40528fc26329324027f7e0ff23e36d254a76e8cf4b5fec860a63
379506f7fd2b2b808073291bb5ec1e6c49da3142fc4e52df80d1b9902555e238
434e42232b364204029482171c2c1b9b05e91c5c5d7500055078a4641c1d9b5b
7e6dfeff83a82df226151aa352a82bb4eb65ae59ad341052b82ec4a9a4c8dc2f
40b47a93c9a0fa6e27b9c7d43b361e162ffce4f5e2389ff496f166c2e760adfb
ae34f60c8a6d4558c74a2794ec54ce9a9effb0a5ed576a450470036860b70724
8afba028c7c7d9853f893ac59b47cccb8c83e86e276f50d226c62f9126c922e1
f97de3f8047d8a40a8bdd9988f40d2e99f4f92cd34656648e9f2beeaebb0037f
b3aeb14edb29111300af4177a45464fde6655a04cbfc8884c3f92eb367d2944d
0c2be5ceab152867780805d07f0ec6890517480020f4db634a120b3d8981673b
90587e6a05beb0ce7817cd8591dae92026dfea7215bb9ea2546aec59422a6f76

From the PIN diode (hex format):

2026-06-17T05:53:39.065196+00:00
bfc4a93b8009dfc978e33ce1ab6ae98a348b27540853588a568e22c522d1ee11
c353ce9a4e781005ec803513fedbf655bfc5949dc03dcc9157c49139348363cd
c5cc5b5fd8158da81196938e22b810ede4c3da458fe2cac18f3659e8b19bbc5c
2f6900f13d9dd441410c1af2f8ad26f68b82ff6c9e2b680e95e8890aee0a828e
e7b425864956a932b5af1e1d826098a222c2b407abfd4ee24046d117c08dae88
a745a4af9ae7cdefc636c633e7e9fe077214fee8f09c1c37e59e5283e0d01ef2
c59faa7321416d241f3c4583ea604d0e9a2c50575eeaf9c306c8d9679b3d0407
233e5152e1ec7915055668106289d972d4ea94908b98797723689762117e7bbe
71b83a2a885f10ff83908ee6acb306df0214035e4e5cf78806c2afaa29df201a
04fff0c24454c2876fc8a00b957973a53d971088dbe0fd11c92877278844e79b
db6f1bcc05259b3b43440d614cb21bb145b389c59b2711369d8c1e1481746271
25d06905e6629465f5c67f56fc648b32a91dc8d0ae0c414524e84a20751cb7bb
632a37df14b83ca3feb86a4a66629ce1a34cfe550b3d899e4dc61033b38e5e63
5bb4bd8170e29e76884cbddcbc298e40ed6ee1ea79a62eb60e1123a60d6a06a6
2dc055f801cbd979bbbda0fcbce842241eece2777f8b3f99b3a0b04eca1505fa
823e6c6977b7d0129933b3a09af66a78d303010c7f43773e3a05669e20763a21
7157985cae32a63ac39eaf7dbc602dfefda1ed36aedea3b95a1f14b50fe90c27
480e052fba7122edd362e3caa037a450bd8e860a29603f41a876d80cdbfacb5d
dcc2e4b5276bf174bb707116ff04029196dd254b6f0300b2f898660a7fd3e17a
4259fa0bb77d6695dc5caa0bc387e7c7d2ee87f31416dabc8fa5f0260d36cb48
ca390e564c42ea6fbcd130c206685a7858918bfae715701d327f9f34d5cd66bc
1bbe8c7d83351ab4432d6658763a9ad930661388fa7e6d7164eeb7923a9cc9f0
b55332e34fec59ef116946dee43172b1472b0b669f59fac35902fec67e702fed
1def7501f35a1fb7ce6dceff19a0624161dd211a9a60c2f9f43d32b26e26dac7
4e66bfe3818f5eb189febd31392918b38c8d0004ebb3e441bd57aefe033d7348
1fe498dd552e420e1b8a988447b53ddf0ef2b98ba4a1e760b22dacbfff9549ff
05e7c5bd0f0cbd22dc7290242762b417e19f042c0add705ea62a4811fb39eae7
b5bda432e224cf6159dab79652e42c368887c77df5d9184abef7332bf6675d00
4703ea5ea4a9916ec63149ecad63d919aa73656b11a1ae8904c58b4e0419f756
2dc560b187bec2b3096f4f73fa113ebabbaa8c4d37bf51b2e9b8d72b84b551a3
b3592126ad8c82658a8f6711ff2f8ee3b1573972a7dc76d9d7baeb77c734c5dc
993b0779d0d4b80df4b51a173ff2eebb2269e48a145c244c899f8040ba6c73d2

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-17T05:51:08.063604+00:00
48622417008629676682973873504654549662865773247674
45851979113161330001372698238630942069952899745846
61427698740857590943758190796130491253728526685579
37464465512657326719957542665039633766051321099841
67040310534131305921393318202853924204555225639592
39762103920405148146828497061899909851082312867248
11522565644326392579903444106557992222185596728056
41662045725081491826425614032172887544463987577743
96003227976196155946501775555733019811032089865529
45590723073133662120749813312396922590557358749741
26183602169404340427566829393021213562242508856323
69201156424630151656659987334103524196310936632402
89955481721038274405620107955469600531638926129780
68841884872454373550530433969907923643479729751703
24036423215557675002118854057994214787778032178056
42293420533780494877238913162118854167434657330034
11149226716759077974159731233564704647839408780414
95105100577462506731365189895890269120425034408253
63822216348447921561196320183826145034234376960954
72732975058337464996983499685522663159494363021971
58898969325928350097700148807953088171444206174262
68927487768755716482439499415064393509377418759534
10995549064343282815412781300873496678822885443785
56677866354354660402483023284427550528929317000580
20640028295591260931684538212663826843800174897352
16828446966964476480224760103985995954302247565950
02949673745212380969889974394884545876658706690412
03049683073638604099993363375897557140311039118038
98474538342504253864688952436459794652010272907603
27797477784117190075651964840001900436329546790348

From the PIN diode (digits):

2026-06-17T05:53:39.065196+00:00
91966959280920607106385239398408838838864234973417
95835478201605285319859197485792614587964557523199
97919521416817504742348416956943934354897755889247
05006157656512267338393008584304144937101030428037
34738669508175302930965262349480077178647023924174
36676964755498549851071420562855588231309759701533
65093631606931967714544480879495060355610407356281
82212105860416983714484439522119350451981726239013
84584236951631444272790602200394789236069475704132
26049468849435116011492115656151163617401939366855
11270537555967681397767827776979379755391754574030
20291698133705059848019827860039506929741265693674
32172883879942552084606384067402985663768511613758
77981651794294999180892912581836768988414264102166
46821417356613060666459285012187896088663630192739
63537960767821053062080519831853517960540620030112
27671962580502583218583313875292745066589558752588
96456154746385903120811512397214054786133498605564
80894234104196636568181293948139071687121322040245
50377511030078520210272266891183250249927011953599
35202288436538135472571486766611884894060490208845
39211229502759520288279040253153268067450288185854
48021936260913008346585681835079891705704914777143
11025989958902982612472917019031830925609865973326
54969461507810389978029129439477378949574124794041
00047965898774036115723152854666142738523271816114
85396461967845729149730597891512893414443639988023
59044410129466427217578189645036978983508244543635
99252474905143039300710394646945109849737399257015
01071761743704973978042586459796773590947909117915

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