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-03T03:53:56.157228+00:00
3df2d1fbba6056d621e24a0c029226dc271b0f4cc76b26e3326a753731b760d0
4c156a35f2619372a6c26d591d1c3dfc215c2912752617e99e5bcf9614bbed12
6e7b213c5f60694ce78dd6188e987613c936e4c5f997c69eb36fff532276a3e5
e90d27de10014c0924601059a47b4836ea178ce93bc6421270d0f1942a6aa120
7bdb2cf3cd8b138e9ccf24d9c0d498a170a657aef2e32da68727c6ec7f6fd801
1b55c9d058c79ce96dc76ee226a7c37b6c035a5e39ed5c7e651e424e448cd013
6b0a992a6e0429459d1e0f25266c0ac3be2478b9a2a6a71f7bceb1d8bf5878aa
7625265630733406cdd3db106633b766792eac8484abbbdf5571cb4c1f254d35
45a55fda16291043999f92fbee7f5d768b66b4e617d70ad1a05179acd82051b7
96fe252ec25892a019f4a86a5ae89f22a2bcfa0abd66175d1fdd8fb89f009c86
3e55c30cf4e233a098892ebdea1c75652b19744126f574ebdc2f6deecfe0bcce
554833cb11c6ad9123c6fc32729e1f1504faeb6fe6a0300d1d0cf15d4f16063b
7772ec9aa39a8ef1e1aacb324fe4e0b7e5c07907b426690b722382f12738a8e7
1d0e4f212e9e88aeac90a37d83ab6da2f85e28d7a86cb9c317ace74f2038f8b8
34c875c9fafc90b7f42bfa0f23288dfd81c77eec7a3f22ffbe88d6a95d4ab155
9a921a32bf364b21548649c0ee057f2cf7bd98fc8ab7b45d31fe9712d2bbfc61
b1e77204eb09fa48383ae146bb0f1fdc61a17c64eef94c99c4ce677fe56eee24
7ef8d1b5421b1565f563de30fc5d66ae129d8bac74bda111e29f12124252eb54
8181f52b67c55d5f1b79c5680d71de21dd9298ba36d0f7bb28aea9aed1f74ab6
5203e912ac0cb7293f953dc68154525fc11967d3d623ce61d457b84aabf7bb15
c509fc3de6c67f698e7b3739e0830d7d2c3012113ac53dd64104e5d136687cf5
b77bd038bc80030e715313930a203dd719abfa99699aa568694e2f20949b062e
2d4fe893e292edad84242e766a1d911a80c6f62556eaafada2c69de2f8a7918c
318240b124ec7d98fa9d13a6a93d0c2e961d60b501540ad514c2be5e2b49a75f
d83703a357af250a5e46e7b65630939ccfde7d910afb701f798a878f330c636f
56904d107c19af5935a121aded9f51b9871a96dbf98ec776f2b84d9afc861e16
e8ffe5218e2f9592e3d9b2ead93522d0ae11a433f5085fcae5be2550eb533c6b
62af061732b21edd35c12122ba9bc991e7ec7947d5ede417876e12456fd6a6e9
12d095004cdc882ed9e5cbbb69ab4216df89728fe3cdc081b0c516df86ca9981
dd28fc0e3466a64bbdc33e20f7f34e8e4c60a4651bd4440917e23da31d477d0d
6fb36ba2b4df22da2d635a48c23fd12c631d528b264577c7bba3fd2730c39b0d
aabec2cbd2778956ec79379319fd20aa700188ffd60fbf1160de60c5079a33e3

From the PIN diode (hex format):

2026-06-03T03:48:09.556209+00:00
ac5f81ed17d3cc2df5a45078d0970b87942400024fea33dd1d313b01d9931818
2b0a836be9ddd75d5fb01fe24fca7a4305c7c7b215a23bba915ec661df7f750c
dbbbd6f88d662d51a8cd8bc7978b3cb7b023d6729a76f189ac854f79fb0b6822
5335af604722c237ab29e9e62f3f18c226eb780d141027af196f7c9031f1dcbe
420b0bfd243da839b1046965a26a423defceffd741e3fbf94c8c2d12ab89e665
f255ea2f8f78b5e378ad1add0b013f74306281a9a5a65b5b4200ab32e4abccf5
33e9e95dcf435096b8acaebc1822d336a335cef5a774fe1d9238077e708c42cc
f11ed15d91c72c04dde22b8b2a41be31bf1390267af5ec7e7f93b819c3d5000f
2d1b1484b7e35c0945da9804580ad30922817a0ccafa0b1b66b4930688289cbd
52d88e9c114e4d65a064f9bb1ccda1f753750fc169a8180f67a2fdd8b0cff562
1863f54f309e029733388023d6476fcdab2fbe0ffed7164462f313090b1eab4f
11d1fd3173cb81c49d536c299d583073c9f8a4cc38f047ac85e38ab369756b30
4e217a7c89195272c1b87079b94d8a84d1e942fc12e97518e9aa0928f91c537d
4cdcd25f45c26391da38556ec062c33e0fc478b4e3cf7cd4fe74a6bf6e631465
bd275d31c43ea5dbd2c2f4df085a554fcd96877d8e8fd50fa2623b4f98cacb32
79f23d7e21ab3a8924b125cd9bc3a7d7ad360f0bb0f37e5b819d94cefe743b65
b20e348cdc1d913428e56febde49aeb6f5366cfb1756d1e174c51672282736d5
db79b35f4fa6015e737ea38194fc58d84b8ac3d99caf408a39751b7b9b744051
cb2a52ed80d7df7d13762d4f74150375555d22534199edcc9f1abe48ae9048a0
f24dcb1e9edd1eb8d472e530c9ff7c3709f094d5c07842d0bb9a75138307958c
4e49ba656480209679d1b844d524e3ac8479e64e36bb25b58615b131070a3d85
0c877db776419516533b27dfea3fa3864e9f4cbc5b82cfa92b7248f32e462207
1e91688ce96c4ca3f9883c77a57b52452ef80f458c9adb1c5ddd633ae59d6bac
040bfffc0f0c05fb8299f25157b84b8dd875dbd758d3ca094f422fa13fc6a1ef
0228f7c6cc10ff634df92f477aabfe02b94d105946689042c99a759669b4d2ed
0800eb84f201ff1afe82fa3cedc10f87ad7381ebee6d8a29f24275a0d747612c
00f077060cb47dcac9de0903c08be0a660de09e601824660d87ec8d1a4a6ffa3
0efe99c3fa0aff94fee92377ba3f4195e516c6c30099b29eb5a2e1dd6b77d07f
a654967d5a3eba41aea7bbf2b8fcfce3496990cc51f2f1a6ca8f0fd766c17419
9a607738495e9a5c2681433ad18b128eb9a87f7a312433f0538dd7b0e2bbd9e7
39d8aef0fe3f68015ffccd89b1e8d961641c6c831461cb72070867188d86d3cc
d64557123564076bdabc9b4c8f1f23b5d12ba2c83888c9d3313676314653e291

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-03T03:53:56.157228+00:00
61869686337412024638392715769907385006175549839676
21065397471466940989292861339241181738235891502087
18102333609596057641244252181954975198587911833418
63133916017609369616896423725423405998661812484206
61322344391942563692526112668774456635399827110127
85889956099910386795230803909457922601306678684019
07105342100441695730153738081095903620856266673123
77918820701837388648155206160251830221467232327187
85137631377753696595224116675359462793183902802310
60812172328183503746948846602568069059346288108902
23933143845900563462859512516052374689281701432516
65381647098885725117987345359850145831210411604813
29129379220659191454635442705079839221078038051114
35303956682914793346583674724463253171096294406808
85952372793256845217448343153540412999262263349036
69937477855446265091547533843473920527448952388380
93495118879777140409725658708715319761240076539603
27103626816627210199489302741857397216896117591818
66828429294303979395272197041313334652865487407469
74748282031872128341634961982984829593250335978784
74718721970961982705422355573113254448181758976165
04540424832356882803141383194710326125715305546504
05784732485506464579474673323646180629452628983786
75736298576745404930647736255257196669611246502996
81018410209490944373679555036387753710947082864847
56254510123121383543511299118644771624257589536133
73598185352650429918847754343022334247494678533474
17645108959037808360079875062350783053933334865545
21712335101869116618490076364687057166223714439229
76972234532940145202667589956232784276966401276809

From the PIN diode (digits):

2026-06-03T03:48:09.556209+00:00
72952923456480205111354836000279512949590147242443
10310793957631792267059999782162598645949897271712
87410245816839995139608376351454183772337921110434
83537596713494557141476324943820132016397525112444
49906611113661685777040501620666616576404518713701
85474320812073261101631648982969656691916600715071
51936780508472748824345463536716294656072612406630
93459944044339426590499119443822262747842595001545
27203283920969520488100934292212112702804706364056
89824256177877016000872861831715930568241503627698
24997948580251515628357111714790152268981909113071
79174915299657830841578848156456717233387905170748
78332224372582149384122185773832661817247009402883
25769569949945568510929895621596208024166691109920
01893993499662659408908579503525424315629859795250
21612633715837367737559567735415117626912957481659
01781452402945524011737482540823861697221440395421
79957966019415266329488875389556756438571727235516
64814282282519184579162103178593348365535926907274
44726077305830841448245509489220668754171931074940
78738601002832502184683672322178548737813421774907
10613312352583186549228359396363347859768891306943
14724670340730450440087663366019652382694615694054
28939958570772041115120530538187847541178809796647
61639861024098169977477122710285771689700444665417
50058008003201263060931535731529093841661760719744
00190612802509039239669609013070962664666314539510
48351986636549229895005378588162071927668450259062
86657467878473054481664315029316255496195673945492
38296758391842856827224936518341768757746304019537

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