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-02T13:23:25.248224+00:00
6fe197e97d248751981140c8dc2367124e919096a0631894f03b249305eedfc1
5bdce620500e17f3285e5ea26052f2ea5cec482e13c287b07f0440d269beda54
37efa5fda8eb92392f805ed4cb11840a8ccd336d4f0f7e2055f6d4ea9f75ffee
fdbf26de1cfa059191390ae141c38bced116d824253ca7ae54b40431214670b7
57f2bff632c45d1c74904219dcbb1535d8786f644e4691c59d38cdae9470b0c5
984064f99467b1ffbeb2f4e0df5c5b113d91500d1565d9b50d76d46540a19cb7
cacd5fea649ab54eeac2b15c3bc2f75af6d5174382101907ee5097252f6a0559
ae73e25cd133bb251096af48a2980b04392aca551c57bc4b51997769561b0d47
118271e28da1e7e66eed1ade8e637f7053f6e85545828e1d7f885c70bd2ba51e
a78e8beffcd6cd4b96930630576b6aa4d2fbb25d490633514c7ccef236c69027
da5106b8a1eb2ea20e335d70583c925c97bda0314736e8f1aa1b1939900df297
e068fa92326c883c597f62c668d1030ce2b29d93be4e41eb991d3468e1f23eca
2635c822200a829810fea9ed4d544223865d942081814d11b94f25b95bc92ea9
abaaab885dd078fc035ebd214b110972e4bba95c8a981b1883cc0dfe4705cf4e
533d8ca6bf2d7e51dd5d78ad2321886a74b2e10db7c30a734163b347f570a9ba
17a4b613efd7895a063ba966afbd71d96d7b32def6151b53e18c9158afa4e0d7
8232e30eae7a8a13f06fd9850961496a5b20f4af1180be358ed38ec8e4cb6621
f6a65e05a59d6e5473ef431d17c2de963f754f309bf4b9a3bb9614ec7b593a6a
ea60928da045dce22b9d4a66ee2320b468f06596369a3c954633844dae207239
f1848c8f84e286d77e7843a66e45ba30726b4687c8e9ca55a8bf95a756d79655
740759b12c01fb7a375fa9246ff2aee19c9e9948f26de24b8e61f9956ce94463
c10c105db891b6f8ebd35e7c53f85c0331e1a780bf1b117c77d7b003cbb580d3
356f45c5a6b7fc9e8388a605a167aebbae1ea5677acad287861ee9e6706837d6
38c7366ba87b82f13f8d8d1500257b4c9a78d7b8f85209c81c01b30b99924dfa
8d38b4a311487c76b058a7d016694310732e7df65acf6f4db7371a2257b99de1
b8254a6aed8fdfa12fec3c02f9b2644b11457f337543777ba8fa0471b1fee8cc
522b994168cbb89fe15cc37ac73f08911f39459bb08e96e0d8310ea4e417c64a
6cfb3179d398e1974d82cdeba61cc5a29ac453910e562e047628f2e0478043be
2c1ff9d8e452959ddbd2a75adb0550b6c8cee1aad0ad065351d5423dff6b0298
63115190b33efc27f6e0d690077351c7f72ad85958854ca47a0a73b7a63a036d
856d4c98f2f33236eb8b20de0754eeb02d5731ccdf81908553c5812afd9815c0
96ffc369ee63f08a452471589b0791cc46656a3a4bc48c2203d09878ad74f92f

From the PIN diode (hex format):

2026-09-02T13:11:14.043774+00:00
860613731236831f16fbb2c125b9eabfad217d8c946ffb0e8fc11aac8b657d68
53acfc8cbf8ed48a715d23b040d20a0d597d0a6982c0ee5ae9a6a2c9f5c4a59a
5c38b4615c36d627b7486bda90d0905d0b97948a5a5374f98aecf46b9b2de85f
daf1ebf52802bdd9c2c3461b375d8f05f92dca38ef951e1fd5015b5a968e92c6
e3e83b1a39221da7a7676130f8418335dc871752d53c03f68f60fe62f77b9685
918e348413aa4b40150e6b9856ccd8a59bbac1ec3274acdcd8b4482c1e9ca390
75bf8f834c93f7d31d6da283b0a0ab6cc7a377beaa77d87c7e4df359299ff3ef
52e14483c2ccb320c5072724f3e573b2ba0ef5e8bb6066725307b3e54d80e8ca
ff738b6164fb8fe8eb745a7481708052a33d53d7fc82aad3315d5ba078bb2814
ed185826590b1c6c6a085942a18fd6bfc32526a8ef31384e214ee87aad17ceb5
73c2878a4f0179b516d0b23901a7c9d6bc95242de3072c08ed2a098ffb947538
a48234b3962018ed539fc706c96ead14b8d6bbe88774f25a5d087b2d157dfd98
180c0722a2b40d323a2c5d0f07576f08dd135615f74e9cdd5c75e3090ca0bd06
bc3285b684c7a04760da2487915af9b0634444e91a03ea902aecdbda8394e460
d8a29b848051bbb81ce6cad954758ed39f435b228a7f922f0edc27b0ace5625a
f9a417ae2e8a8b9d2af7bbb26fae2a3a0159844da2bc5a734e209035c4fdd2b4
3f4d2a6578365fa4e88f00ab33d8a25f30e1a7ee7725a70a6aaf0b9000f8c730
476eb98524bea328ffd83c1e14cd09bdd42bde30004bf014c98bf583fd3862fb
4e325bdf051aaa7fbfb2b75ab0c585f14a3d7c3fe9f1e95a8b048a83b364be4f
644884c47b897af8bd3693e8d4559727100cf722cf38ae46096722fdf858ae29
9ae4ff5816c39f114944860ba5a910fc162d19108e80abd7cad6778cf25677ad
17b2184494b2277a0176430c3107e65baebbbd1fe7482e1630c3ec8a442d666d
dd80ba8872aff6573481e6d0152434694bbb5d004d7627e144d7c5c851fc7184
44642510c2adccf1d82412a5e1fa85c2a1301724cf9eadd7d7697bbfa9d912ab
4c9aaa6cd55b69e3d8154229b23ca2920426e50e714e6690d3a0b56182d64cc0
0385a3a07de1454cd5c479c42edd50075d8cba066605fd1fe328703d89954d40
77257f51d5369b22f3bc55458545459fc0d3f83980117c726be604667ef213d7
bc220b4b37d64e2a5255948f6f7df5677a2c4b4d4003edfff38e9e42bab801be
98d04514f159d45d827e1155c97d60e0ebb78accff60706fda594e0479f963e1
03901e42685b505d50661d286b4ae97aa10f56a1e97cd4df7029c0cd6a68f0b5
dd6a9a0cae30b6e7da09964dabfb427962ff8babee550196a1b72f4357f52b48
85ab420509460df7a6d6370e7eed16ba4604a81e39082e7ee9a9de19f76127ad

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-02T13:23:25.248224+00:00
11512536358152176435031878454450609924485936470593
91328014234094946296829272461994357627046405908455
65684657472894173210405109791526328559179138280545
45571065953922363760677484800449337012838791509693
28164466258721532011007870459757567448127697526400
48037790789291176145801321018113180164615683950054
81789477925994902367301625078051374706058974159251
87371650757262521104574285288788758153190586271371
17301341611026429927128385693042292736921289436530
67423975504706488707066478937306518176245498443981
06846146621451931288604692518960497154702725574413
51044650083660892798980403127857479078655329520462
38533432103052166977846635349348322929771785793785
91466971707136932003948933751709148769923852272431
13710578836140669145268193207335333606167813839510
15659979711269862364821937900659690275891309235021
27834045887564305014742238191133099773069132751728
90534242023366940565571084156729239450631779485585
63875020238958069646416069435774023532800401505454
60497051327774321457324043323426206766106986481407
70358568914967865085160789774401225595693611745658
53720975429749086899931216938445829424839203496728
91271724197603812853116997668358313666056103748774
30650322353430120455569954076823306341412100372376
54208482092801791153467741568063177224187688672205
67161546259011778355263487855784377406436147600278
00751769275117671923680413778243536504845992952299
63084531576955764250491464239874084921525177306628
97625496834514864604184071286790443182495767900580
82707306838166610702529917814479623944071581994289

From the PIN diode (digits):

2026-09-02T13:11:14.043774+00:00
34061915185431312278933785917333254048111443932672
39012504837240914238139335766410138925100530929066
62966554925680979254398372074444931151483890831638
07554595400289949570275593430545564930310191905042
46985926573429676703974865315335238260034396982350
33454252321970756421140752866555869350167280724430
56634417914331764729096231766071089963199070192426
77894159826831947932970739361578861487960214830779
77281539970043169016291228826361833070499391602087
40202488388911280806088966614391953738684956783378
22732381159435387901218122785701678849364507440842
09434817566430527950322483599906107320848735169093
08234521255224120734628013505844931507871108198621
78569217091260890688503382329960719636354590769968
68260344423148966255322881878428841742596791343827
46471439767298906423744638395742877811744258018932
77628890157832445396806377420120549564430071516295
48671937671006751144009948711085333690634060302009
89434800752039315698785091052670279178839076973374
61246390390438317900907900723296233722895447855139
16123456747009033488744154882295591773683411656916
22452516422871194086197323782468487839220118671249
07917487893172462248953868450209288636147587522921
36520575879300771839689781133268003716947336186533
94614823365873052391691871765470089105216641786062
46043814137802446081973076920333636025697696219646
80079340860602053140126137497764193727815455348885
69336969599257281724140704022619883411755578428285
48431125032244757764034258668684019052692089933026
17852596833896121189780421990344306604918093800229

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