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-07-29T10:57:23.450237+00:00
e80d6e069d355347f84736152b413617dee541a3af55928b74d9aa95c72a1c3d
f2d6bd639810887916ae6d97fe4de8fc941db6fdfb3340e6862b3721ad036a13
0ea9570fbea3925e17b65f1e89525447a879a9c60400514f074f2cf5c06bda2f
0954937076df5803a652d3f47a2353cd6e16f12c790d4447d3948827c52b7ada
06912affb570fc553c95fc7b172e885d8045a5319e0f288c5014321d3681bedc
56b59c845a478db4410398e71c22b10b724876d09d6088c7494770ae157703d0
bb4acfcee32d912fdf3061b7f997ca67d6688c7689eed8ac823a4beaee51e162
5a0a4cfce3dae47ab63e48714686458ea622e3ba38e75d42b0561388847bfc49
5d3600bcb09388d5cd11e56bc1cf32c2b722e1901207e19e36f297dd01ac3ab3
44fb3542f58da6bda113913cd8b4fdd62a4909fe87291f63accacfe8b1de496d
4c48c1ac0a7520914230540cb183338a17e49f53314d5690b1a53f0b33be2d2f
637399a83f7f7e6e114dd0b85fb98eaddda5f55c340ac6cec29f7bbd2f57875a
fb3e0532229f3cec967922384212841d6da1200e4de316b402d558e6672f9b75
ffced83cb7159225d3ebdfa2ae2acadc55a495d387e7a18878bd0562c77d291e
518a09f95db666f1dfbd4b449bdad67a8616eca9a502a485c0dc145b447ff450
36d156dbb209d063dc71270eb941f233767733995febc85829e8558b484864a9
5e34398918b7abc9e32f6f45ea4b4a6941c8bf5fc0bc9e18cd3feb81f7e1291e
15db574228c39ef2f867022c3685c25f9881d4be079048d212422c7faaaeea4d
5177ea83f0a7a60b3e9e3eb39c1f068dfffac3c17d22d23b3740b7e62049e15a
e8a29819a06ea9601566be48d59e2b613735b8d0ddd722f3e5ff8c226ff23676
31e87611f4c3b16781a666f34b75f78b352b1c7886530dd97c16bdc3e9471ea7
3cb6d3e944aca74f0b9b0c20a5e86e6a385e2749931847d4be873111dc6eed46
567bf307d9fead30f36c03ddb5775bd9befb8f458c105e8c1af4e84aea69f66f
4b12b44127fe8fc9f413b5558aef49be6b9cd9679cd623c22e12362ecccb9944
f0841fea32f89f4e5c59db1f9ad279f75a4d2e2b54be3cdd7806fecd76431851
6c9995621e4e9fdc65466be93aaee3c0b79f434dd0129ba618fb6b9c50722128
0de506469d5619506a1087b9eb349669259a69f771d9c9e35505c96972b36f26
1ffc8949358c789f5d7deb5827b3ee241097155c435c6d2dc84060126f79a0b7
5b8958b099361777a0c71e0eb1f4556bb1d67ecf44f6de6f7b8ade046833ca6d
499d66c24c5f19869f08409138e578178a27739a856caf7388ad8fede801bf0a
538c75311a63693e7eda64602661a7ca655f1e24de86e68c4524d307f4223c4a
7a3e61908d6a742fc360c7bd6a94f121175dd8ebf03bb96086921de3271954eb

From the PIN diode (hex format):

2026-07-29T10:47:52.448742+00:00
84bf3663f39a3cbc9d4e5680b9628619c34319feaa3e484aad89ebdbd9c6dfbe
58678ce00ad95999b5d9fc7fdb7d1da380cbaa7805b8fa843d0d19e1f2db59d2
c145077f2e40dfc96d849405d0bdb631253fdffef32fa00861debd6e374e987d
600454c81d5c8af14945980e3fd0e6fb8b34c4b9688d933f758b21f6fe729422
f31a83f287d8f36f86be3cb43a21e4c2591807b0dec161d2410179507874576d
7ce732417fe5f7dea7fc606aae48a55cea26db4d0934322ed1f63807bbca85d3
bff8239dbb03ff56db1eb4bb6a2f23cda9c89c12ea49724783933aa0c44c6464
35cdebdce80797c100e386280194eb1aaa5a4453e6486341b2e3075b89c1ac0e
3e1c9dcd0c3b33014f2a0625ba381a7257d39afd9637828c7a16de866e731f7f
ba7f5e2890f0776c6a2ec85c660b95506a508d1dc71f72ab56785c0dff4a21ab
41f9b4ba73a900e952c9bc41c13ff6bc2fc93cf01c9edab7c2c72f5c55a71a05
501ef6f51ee34028a64247eae496d2967d6e9cc494fd0bfb6f2bde52467cb2ea
b6febe4c3a82537b50247d21724274e0adea6d6ae51ccba87a86e2770eb2fa99
81f184c3c464f9d402f4d174237bb6c6cdef6d8045fc0b0ea4fdec749ff662d8
d24be4e1e858f855a99e5b66160c3c6210b5455a50619a7171c76230d86aa097
73a6b90faa58e3ba49bdf0e210f8c637972ca847df5ee5136cb0daf28de771e5
35cd63ff0bf5f0df3297b50572f0dd6dea87b202b8e8511520cad4043456c780
2f17ea30bba8e7ab23d2190157f3771f764c6ee73e3aa1aa5f748eb5115e8271
795eb7754ce38408c4ef7585f4ea837294e524b27039688eab99ab004e7249a6
4abe4fad6de52b305fc3290f666e45176faf889d27f619d945db013185ba4bff
ef62659d8b5f498704d8cb72747e3d4400bfedc54e887d415d4cc0a8bb39632f
f8cacd8a23107ee2339b4e09e2d42795031c4625c53568b1f0f2f4f1a05a4419
ff9548b897bb092e503476e51c939ac4a3ebe36de7746afa001b0b06b44eb28d
7db5196a773eda8742536c01d289ad0e4f7a61c73637527961f09c34c38adbab
597031971a6d7f722a766aeaac5daa12d177b93c97c8769b44b05a3afe87728f
7ed39559cf2236a6520cfee5e55c75af13db49658f2ecb1cf11eca8ca4bb485e
5d5c7a44873212e38794aa7ba39842e76c45f1cdaf30ab8bd1faa1fa2153cb0e
5c4d1d100f2a4f7a99bdc2ce536991bfe9fb0d55e10861066fe072c0de65a119
8445823d7e0f20d2ae99ef901f78d53d990e50d8ff82199507f910f039f5701a
701f9ca6375c32fca2fb4b90584157f99dbcbc389b27a66cc539982a5c37d2cf
f0ef5cde2fd704e037e71de062350184416cd03fb8aec41fea67b28fa422140c
0ca098aab962ba0c2da2b90fb8e46517842fadb04b8d7ab268b84843ad78a1b8

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-07-29T10:57:23.450237+00:00
13100657538371715421436554236563758546391670499942
28618999521636212274095177482982516434435533730306
19146987159063469423829530378284716821699804008179
07794492074709844712188803668222358310224421136871
48363997432206454281128560492323463693286965495815
40408020502954299086815632907141806503522834771114
72185796369973711274211903877445454748978351030440
18377230587581989010762282627213703469426634865693
66768619363223739354008876473617079350948334441807
58545101725879685366416689611945608042730935413199
72777309767293721017324566488412773151382359834977
86447765631151904547991553686327261017778495854273
65925210989459238947873590620550345960502134566618
32290961321477228002880347551760832146376274428564
49356136208905989925413081380993820289756855223422
69650264339220916827805486780999133914856551181951
53958841853972720069945257372483714711697574056591
95928858246329413021876640955803024454339495522990
07447218664427707477811931676611625862795631064195
93253459556483327390625225601069962102907258439755
53843440341154184918179577032966027517395343282034
83132422899571306760826872677911551232651006569439
73472471903549171070862307734808038119919043694016
94402674051175188065394319818538739007560356359446
18544653683231505978928931542190774643849060200618
67248108534998307859017007587492835967771855662407
56801433401306705786258006163585525005375405138505
05147911383137735340205993258839793616512192679209
45649618112160839137887653542319609930147785077726
68112338040451097357029476952534590864455620233839

From the PIN diode (digits):

2026-07-29T10:47:52.448742+00:00
32915499546088577886288598342595672570627274733798
90880340108953812725296328702005843261132589936907
27466409324805898249376347600897891055785225960484
29923873695214633952968504414763173933144834263135
11349060805833948924077693976501218020168709245065
27679606747265923877095250465607873391355787038630
80870647356956187314713147586096760000530751930034
40014826709068837299657807913793721462285712595101
79420637865626148754505530402222341015312786279440
44190806469202114980068041299931147186209213743371
65808615690082886593638847602858839499479285672605
80303064406666715050251056964811114382702478829076
58308323803625331466167309062868223419147853293295
96000216352382980928691114641659987588856958910222
12609816816990809754131399984806605115668515708886
73891698555144687194190876411353991150518105140935
78028481213204528699284723488768713525018719311876
10625861709516428117943013219483177632089617333114
48367812570442715371007814736674907973094348959541
15021069231175365739256901493386759801573995733504
14162661680091977836256593769268875799473835162651
55780939490328703797530477609068254972845187094680
52182847549663091606002711068078784125812506196235
66830801377314792297995455822197565295387189124951
26092714421806729370181985605118556876905835144326
49893454668212921775197301434628304064877294939222
68355018354870236352660869754871396133831492772916
15427922538994830545911385089706111492016125326930
61261532745344312061531480302549071657122612315666
55925062754488658757888856553966089757524292559247

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