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-23T02:12:43.004176+00:00
fc145a61a7c787d697dc741b900a0c409063687f4183f0cb00f3f67147cf146f
ced8866ed6546c7197b592dfd847b91405c4f84cab7d69287a60ff8d26aa7e11
de1fa1d7a739fa925c7ea972fe92dde116634e591ca0f66916e296cd994a79c5
5662b874915beb0c07dea060ad6e8e663b2fec4b98c92896fcec8979af40148a
464f7a70717471662e71adf32ab7245a960a7e332ed76ec874cb4596d963f0f3
463bb2a6d6c2c497c17dc61693cc1f9ad578f7338a7e3f83af7969845fccb1b4
f551f094ee20a1b8a0dcc088e2c6e626132384ebd2c705631c81e66e9afa1faa
4fa93e2e98ad89af7ee0debe7d1e5ad2b0bf76f4508b52a4be3ba98c285d502c
f06d21db5f666a9d816b08c6f1da12c262ab90bfb1f513313fee9ca95b7857db
e3b38c98b57399cf7c3062095a62c085bc2cfdb2a097bffb160dc7bdac4898c2
65d61a7325391a06969f7e9fec6b94691282f8e6a455363ee4e806b83a54b0a7
175a735bb0cef9ba660e76b06c2261068acb8e0b4b1959aadb651eb8adcd8b73
15f993d4c18dd44460cc0050ef2be7bb1cb8fac52fd9f99dd9cd51fe8bef0532
5360bec76bb919b7f75506ebe5a8fc4c83b129e808d28da8105af4689f258fc9
f2785a942e011b9739e683caa301ea35e1d37d947769fb7e85d58ffc5d7cf864
ef0238dbdd26b267b534791dab2e64e1a4d4024303941d22de46f1ad6d454665
6766f340a89adaa8f5f99321d6422b662173722ffbdc3782831f765a0ba67bc8
6e298ac0af46a8b05656db9c2bcaaefd1e7ab9d10f4b09402f9c4ee97ce87e54
6799755cd7b8325f651c259eec48728614e408d82eafd22eca9e0c8c365d80d8
2b9afdced7b604d2214c311b79e62974af618ebf32347f46600b4406bbe814ba
cf3e5ad00638a5353b9d297e99891202b37891f02ca389dba1640d7fc842da87
ea21f1760c1ec2e9ffe457768a26ecc0c1a7a3e9ed83a89500441c7e568aad1c
8a42d5bfc44cbee3cc42cb2363a89994b8e7f83b2050e0bf3fd13764628bedbe
ab077dc66fd0f36b9b62fe903df41d9d6ce7ac1cf552e8dd980d1c590a8b31e7
5e04b1148b1fcbb4c31d615a8fdfaa767989707096b3aa51ff0d83b0b892899b
521c2b72bd5d5cf2733b4c3274db9d1f6640879cd3aa9ab8f02932337d8fb813
1a279c2b7a9323ca077c42ef5ccbaf916dfa64c0af019887b5a0fedaefabea46
91887495f3a16dbaa96f5a110027ee13453e11c47c184ff7518eeb212b80af88
3f2f4d323c0e74963a063beec9cdeb8e2323fb3ec61bbfa25454cae6b607a631
0d8e672315116a1564f9855e32ba715c945aab3a1c0e0f1704de054943605686
83ffcda7808abd6cff06fa24f1540a0719c5e4efaabf8f05ab5da54eaac9dcf1
ea6b0c8934b939cc4c90294f13041d4f366c06e1ea78a88c9d5814634c36289d

From the PIN diode (hex format):

2026-07-23T02:03:40.403019+00:00
ffbd98e5d6b65b4aa76f2fa9ef791a474f0b0eb893a4c0c73f00bd06097ec75b
6fc2ea8f5e386097b3d6ca480ba571784c27aec06d3845e2b8ac8fc7606a364e
7484925931e4e9287291367f00a8fce49875460c0d25d4dcaba71600429c0e66
a7bf394998afd057a321f3182b12013cf984d3d1b60ae492faea3bb4e5d3e7b2
d647df2247974ec3ed714657b9796ed3171ab05a86ec14299848338558b68b9d
6f9d22faf1bd356f5fc3c865bd7e4a27edca6cc91f196e11488c81f2abe5ac73
84135cac932ab9521c9891c13050cf2c21b8fb52ffa1f231b0d282dc2317c273
b9eb7a49961040cde22e4de3e3080139acdcdede4404aa48db56794ebb5b5792
2d117f40a0c0d097b7dc720c0622594fb01ce1150893966ba0b5ed954c70b165
9c7a416aa8c2c261fb2cf292008619cfe0abf64485b0e31c67e3167dd4c98bd0
22e83a5231a0b3de1090119c1e6b317a8405735f8f9e63d384d3111e1775d8f9
98e4d86a30267e43411d10911db7cb60ca844d563edbd9f73dec0d5047245225
8c19813cef5f659301ee487f9bcfb6030b0edf66faedda9d4c68dc1e7a74aafc
4892b7e30c0a83bf904bbaef4340645ec42bd88757b8998703316b5f763ccde1
a7fd2bcc190eb3313c6bf13acbea680e4daf2087a33a2cee89f738861ccceed2
b9e70987dc661c621bf5c7bd46740d8529759ba4aee43cfa5a342ab4f1e6d871
9d5dade1d144ced5045b898bb9837db3921444f6e3c5b7939b38a461182c13f2
841790e4f861652206e9b6167dfb40162363027edf85752552774c520c7b8857
991e5036514abc03713e26145f9ebb400643d63faa9f566375aa97b7a9f773ba
4bab5bc846c64f25edfebf814c6f484f4d9ee88ea874a878bd67d0611870fb23
3a6a169d8e376762bbb5d2c69d4047396e29dd43096cc581c0f3633540c6a035
bc535d3444766bf594d2dfba32280ccc376f6a5db7c0a18cc8b524260b5ab775
f734c21051d1fc21622224ef7c06106d06347a12113d05334a86c3f7d0fde644
f6adfe088a4a282f20561d7db97831179d520ababe624510ece861199ada8f61
df7eb83866d7452114d4f7b415138a887f57245e105398b98f54fb25840efd36
c2125bf85bf3d9fe04fa09a26894983aa505f115dcfc13dad7c9c6d4a31eee5b
b6802588cbddcde8640ce0bf7e32040e6809e04a08c66ebb1d91648c2d115874
a6dfb21942ddbc8bc4b9075548ff7343bc0b5dc3ec64ef946386801a7ca2433a
c3eba2bbe9a61ac178c4c6300190e4671bdeb5538a25a9abce759fecdc4e8072
f3a3eeee4c2214357b14c43a86b0f1b5b94f7fe4e8097fe36bbb9953f0b594d2
a89307c79efc3398e7aaabf84379f0e4fa2e4481cfb91d75d1e1eb9931121c17
afcb0f89d21085a54fd912fb1b101fa761bc9e76b09e3e641ef69102f92bef3c

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-23T02:12:43.004176+00:00
20909767993551162744101264449904276531001371201134
10840813518146718520059676712505402296413870261731
61675746922669144622997889286005225053742197869884
16459112076096731042025947755240503721756420387079
22121316130246137342833690501026514610166950997059
78669496519325982247315420513826633175210532957780
81483261846092369838193532990599282910543170796962
46527337752690253090769118803982649059694040938044
09339502065729070898189498714491771949635669912087
79405281155324489809909892338844786051912213998972
72529401261537572606505926590748051830648554620684
58847667239015917686021418760834970638421175258970
01308473391521479341689600804387288497475781390550
83969099078525838506687631774108416816900459374320
90484601275157316301532548190526334393240002563878
03815221297146006402670348293470730969700103026468
54684733664302331514475530313118901166231041389275
70687686865643743022851575096447567824268403531792
84509501283758721434200846754658124054932843548204
33764927214116759742915052277096116806872086629006
56655359574126533718027920454463376100132766353318
12309487183838929367633168490068282686387328386691
96769066359968534884593280916355009839907107259811
07559844612957087228825213288910394994047720393180
95299790437018213712125079708113317684463755822843
14899392155976501657310264355670548441505125438419
26395643224735072466927545090092750152358160717045
36164961098669119017003919696217962424798142334328
75366347775060141650580659423535629827916284848207
66491342033521170621003394508613924890715828141523

From the PIN diode (digits):

2026-07-23T02:03:40.403019+00:00
89528291746711476921267179111484476492996300890609
26999111944394569651797211651320763974920956698472
43999606547816324689494014455427006852177012133771
67220066561402679157735275876333244318016032821046
59807871347151789513708785211023267690342041527251
33888239571157348953119595018926743908312510177240
29717215321992724742858228524593488044338482614976
30352394158522735016644677080157726804707286217887
91874645172764609251831412063489797628210847500760
81497612770156226506689494974446003425716833762803
22253934588249607916441756300749223205159543589932
17302317520648382667652916452983963277866261138071
36823740252960950147017227558203111402577604302216
70724683121031914475866764009496433587845335034907
95186067432514794960075804147775323563584437563428
85093502289827998970161333411755647460905242801357
93736804913739853125794620689783475556649724441932
23449701340682222564223599022633173782197682122336
87533080548174880313623820955887640667637059869917
70518369158675719170987937912976117279775842681668
20890397241235580622574255039887819857647157104167
09089729929953649860538883935268180748865040125511
06938392614081363811908317529416813398343624061609
06522218176105517434956873083874404732862925852049
23578210869098691697255443972684560269332080211938
36278736941683528543843732145494189191040962044852
58650521199863309182283736001291265004140409740898
10872945004045178816667825668839968507857215678811
93950048993428262462675895628766269320969848014403
27818338376971175978281463763420532320965834768185

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