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-23T21:14:01.123397+00:00
de693e672534daf2465c81c05172b2a8ee2b5c65176ad6a7eaafdff44918e6f0
78c4d5c00dc97d14167c85335bb0ea5a40f5e8c325ec39b12a2b2ee6d041f10a
51a6e448da88a1989d1b269b12cc5a7290f0c4f6d3fb4560103addcde385fd7c
8c6f3949caf1b3fde9c3ab1c9e869cb5e7e7be4cfd9ec05fbed3f6f0525a0075
5a4390fe820441bf9e5b91f56ede9319db756518ff99da63868806d042442341
750154993d0292c1a44842c8fc3d51dc706c0993e3194535f5c112daf218dd6d
9aa9fd9e5c89078697af14da6b9432bbb674bee4e1f7261be7be1d556d5f4942
bc169f47bd582fa71f7c39a90a0233420c1531f021888ca71414e60a2e6c9a1a
476ea29ed1937c9544e7bb3f08ef1b3beca5bf9200577ffb82d0514a3ef0521e
d613a67b5555d8f927d7a51bf27aa655f549225ea62171cdf5feff319bc7e923
661731593e584bda5c35f9d3b4af4200bddea5a08ebc8ca1f9f5d22d5a2c358d
d12dd5fdea21ce830c497cc64749fe0b85abce6f80b05ada0d4eaf42f714ce41
90fb7ffc10e6779aacd4d5e618289000c92b4fcab4472a5aa8efe4265b6b4ccd
fd5415dd76573be45f2741cfff145491a146f43fc7a4441b99f4fe3a99edfb40
a56247cc567037eb540a2b0d21b7ac6791ecf9eb14bad8acb587bc5e32afb7a7
4ccf181422c4272e069e1bcbece7377bf991b76afc1c607a909f9c7fc0f4860c
daa70d522ca7cbd5f0d35f3b8f6c6ca03b7fa6f0f2a912dec01e89aa6ba0d6bb
fcdeb47dedd45ee9abaf31ea6dfe22421a4b37f8494b3990b9807c8ff6464901
6e6a0c9cf50dd823fa8204da8395bcd68d8369d5a1badbb781110a33635f3849
fd0a8373e1fbe150832347d4d69f62b0266d098f30e4b4c3f27507952a5496ab
cbb88c81a24ea15015f85c99d6a471aae0f401718f0b142a4ef0328a60e3c43d
26889dd581e294c0d0e8c15edf7b9ec59ba50e40d0066721f1f74d988351358d
980b9cfde390531b7815881889d5a0376b0c323cf3ddcff74d6fc50056ef6267
b2c7c078a92ec04f6d9520410fc268e509a946c321f8fc77b8f80fd2acdec961
88bb79d24724eafa50632a62894b6bc60785ff48d5a02f5368d783d26b7f46c0
2df4a40db0f2364f0f8b66adfba64514adb14a86b5550099bfaffddb4fd23ddc
e9ad8e8c662fba12c4ce278036aabc4e6955fe0efcc00e71fafe75c514ef6884
0f0c1bf05d81ca20ebf7d6c84eef2f7adcbe793c8fdd92fc1e0fe69cf5207bd0
0b2f99a95c0124aee179b32d1333f58f27b5c742502a187a4a13f3a8e8aad043
227b0216d468a523c97eba3cb7f01363796895cf08251800005b81f93a2e4f3c
8cd52860cbe36d29356ff58850ba6ccd5f13e0fd1c448bd6c03fef0f00b2a2e9
8483dae4774525311a12c76c9306ea0342e499a39f1258921789c2aa63b438f5

From the PIN diode (hex format):

2026-04-23T21:10:00.722723+00:00
530997d7c956c93ceae54dfd06a7ce54cfbd798dbcf8c9434a04cd87cd7dfd4c
a087833cc0acaeebdc20776b994ebf90d92ec5d6032242e4c53c710710619b2c
13ffb4e33e086cd5d615a7981bb51708e4e858ba867a924de1bd06a8795e5652
3ea5081dbc7f6da875c1adb9d42248682517d24c4cbb62e8c75bc5396696df2f
d63d6b1dea2953667279830067bda55b1db2b90c1030a0a8c86e11873afad7da
ed87ecda98b3d98fce92b25942abc27a534afc4527e8aeddf191443e89af2e96
b4afdd8a8874cbe2dd7f402d2a17d71fe0e50aff6e9d96a4eb23d9ce7f4e2a7f
ea7fb8f0a706838a01837d0cfce588732c82ce475a1a4520da7e0802403bb38b
b2ba7ce7dbaf6fc3c21a44e693ebb15ccf1eac676a4853bcea73c0c1affd74c0
2c227512512e3108ca5db413d8ccb9d204e63487abd28330d8548082e93c173c
fe12a1b74f936d77cf3badb2fb0b644b4504e17a8839a3fcaec151e5b36fe5cf
018367ac648f87a764152b8169ed1ced8d20ad31ae10a35e8e55316d9682f183
52e7f8818fd757022a1c0cd81ed8921eb26ef3cab0b0ecfa804cc0893b10e1a8
19a6950f7b9a4a65d4856bbd1d16c9d034685261195d27cbe79bdc90ec3d5e5e
a9c0c5f1abaf2d051f888fe4b3c8b0d28e69d6da81ee1f8e6eaf79d2300287c2
da3046ceb475fa81adc2b928233e02deeb3276656941eea03e01793695e1ca82
4c2cf21763b44b485b9e9249d7e66d4069fc4b3aac1c1d407c9c392ee80bf08a
32d2f40358f2fa87d35e4016ed9252d1493993709f47dbb7d1aa758980bb165c
960439df8ccb60f570b1a7fecf48e7c82a5be5a06243169b9227d34efc6b357b
9d769033aa046b57403cc78063eb7fa9dbe623b142a1a9cc90d967e122f1c486
aaac8df206effa9567e9dac340036b2a3e85aa69b9ef9456858a06bb205dd46e
a27c442a4351764fd69de8af790864e0b4e5c5ba38b59510a358f695e3313ddf
62a97eda84f118a871a539c2159f2a42c27cd090bcafbe8914e83747ecbd836f
954cf6aaf43c580481251bcb3ef1e828f4cf1411bb2c31aae7c4b6c39a56ed0d
2b49326696bf3f58340b3687f22772b5ea30ebaaa0e289be0b906fcf25751453
f9fd02905e5daed069a6078210bf619da9bd075b23dd4818210f410d1647c07e
28dfc0ade45eae123e2f521746f7843028b8ba07683ee1625f2f47bf351b5fbd
71c97b5b002482c428759a1fa5e085dd1b336e9a3f514ab9d6ce387a671f59a3
ca101344d81671fc12ee4bb846483a5c90440856c66d7a3d843b5e006b2a46f8
0d3a04bb4a7243e14de7a87df2ae5df4457bc1e83bbce1a4f1c99556408e9e1b
c594768a77661fe459fa1505f12e2ee6928b8c006090d1d75b8dea1c9980cdb3
bdebed9d2ef1ca8ad78b23738a50d20b9f20a0174b2b4e6d5207a18099d26a52

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-23T21:14:01.123397+00:00
05620337527092299281147868439201230667757324209692
13252022243351917690649537577742434665108166723661
52572738551890144496699616583324401157737995712858
34568190765892959082900017906744300465915891451047
25170124539934360666683565170184536102469364726661
81120809472569539318240954695892370734517520074850
87821690382790298509957366882259718988476731245769
10025166122149333640672020104608542671106258472449
68876308275965914600872730817462823019662385853965
27226685733494663313495599350223498962887592538075
66008965604288406145904453414533311273249871731133
71112876901378756620654427161954722440440043798071
42906838910776842118875995396520844561706399646827
53585364659871861255841043133383720345208672813588
94507583677624203496394606582755234583062896224459
56279234126713824467955943080860592766691892303770
07608780259471754909346626755573755744852824437073
01100612561335300431498841310561868329171051999556
73103115803135715998763809094348809517074942845071
84402962786180219253641370011343112042785038969661
38365729489293942358975565146406033377523181534152
11564483272021362437605507125060771197008698037899
92206946927909493265159404096970953319841572973687
21713680994298377507980733726047830431072770924564
13765479153902736669207377743481850053917579617342
40024786189639285470887805851492141317972004321512
27932932784722902160434630155632231147536992013674
21794519514339819966804224227419687067342302220465
35268660831999210449083724000091295846796040409609
41531136808608951928683992631500786232311969374926

From the PIN diode (digits):

2026-04-23T21:10:00.722723+00:00
83095186607706678489214188677404352576603531609272
74321907537891444697033466976013071697554419806208
08216752278123088886342246778906682194868262650829
88270968179373853472043723767687989991975702504761
07294183021421310003896591297885121648606810173558
35527943467889667194228374693974456862377546508075
38361627644542233110105750643527784227278467063138
01312512361544307190266932260802645979397886247511
95942668477792307203067283881592937516924434171881
46490893801985045235713148842830602360186183794709
19597378110075690422365763749381791101310372004335
67002143290528413273497416639442854909503031822943
87024228123046307810767628769237591668256649152354
74013307892922520482972593395544619494699297717545
05313643797642052931421075214802359448708017297394
85403562025018010565606201215449307644239980757291
58467309640575587228296424565746113850038835946422
46827357471259718370173728872292500457409612776772
42916098672255463978075323571844517004078764609928
99276935776661694403349634707241064903956403074262
33700585488633380687329310622468426781187957752108
00809786568149166388494961986926322468136557942159
42669424448875903720557189311149767060880429372762
40201787444970968295548613437350025091638852115435
39148148706037901144113717208302449493740566073016
91975769890791357224331565132271922640927394741862
47822370324840848607046298954771915327958913239100
36309640175431653327511054638174855622033189631619
68221318758470725892446808869809226132599400074270
13580487741467776825749369239359886449866442582797

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