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-03-14T01:26:01.143615+00:00
781f4b01930cc145cc91d84812ed81c11abc3ca1416ba20213f30c7037faf52b
ec12a43a19d82d5f43afe01c27cbef16323faa9ac56a346e223921a5cb5e2795
a13428b9b8b6bcbb7a9b071e12ae83762f2dcb3e2645a3b10dce694c6cbcc160
e4162298fc1e0633bea4cc5914e829d79e3b25adf13a16fdfc303fff1482db17
22fbf71a227dcc12d1acaf8d4b4fc994eb09e8db302788ac316e2f800ab64c67
510630e5acaa16ebef47205f3c0d0755278610b2fbfd255c3dde11a0be85fca4
e95fd8cc20aa0f614f7de6a5fdc0b7e56b594917c24714ec5d2f46e1557e2713
14f304bfaf38b35b0e6560d269cef57ffa7e507f729f4e13b99ec6b1e52a2194
1a2cbfa66a196fd6a9cb070baf1f7ddf4021f64902730dd328b6bef40478381a
480c3b9f9345ac4c99d40b8be8a5b624a8f4bc0d33935592ac00ed9dabdcc2b5
9f8b5f480cf6fe852800dd3378ab45bf39bb916bb5c29fd44c547dd9859d5def
63ce9a5a4af93f1b7358baad27ce8e971aae272bea3a06701abbb7d0717930ed
ae542bd352f0d3cfaa8712adbed514e9850e1136d337f205990a9bab8cbb1cde
6acfe09ca1b53f75c286d65b609d65a305528d0b36edd7b0419b56c52c56520b
14acc3d2b80a8ed57625d1ded95c11f366fac0181b207109b81245b07cf7d788
e809bfc97c43525fddee2b51d1c69fed4b96ea624bb4e544097ea8f854aa50ba
b8b30e2f369f0cbbc2f3b1d5ea416cb1518734ebcf22e72c207203741547bd65
24458d87b5b49987c143f5d819548f5e63fa6cc4bfe113c2f70806ada4855a5f
9ed8a7b347a5a8bd5b8ffebdf7e8f46a1d310707fd2c225960ba9f3e177b1fd2
0b24510498313f1764bda70fc36b7eed85fef31cdd2f2a761ab9e3640fc966c7
481ae836de9859cce84b551af1208469866e6e56b09a22d30b4707eaa57142fc
7e2b5975eb914fcf7cdb1c23bee9a4c38966e791de24f5edacc1d8297df94823
8258546644fc6ab10bff1ba0ca6d94e366d4daf9a43f69ee2b7961400e2764c7
d541e7da3b06c8d1b0c6bab4a1bef6fbf362bf5ae765d05a269b8ccc0211eac6
0b1efb8b899b9a747f2eba0b44193321685e8c3cf680e16e45acbcddd445a798
aa6381ed4d11d42ae88ee64913c260674087d7479372b272ef4a2d8f4d65bfb2
67bfb3d2a0df5315294b40590069d1da031460fbeaaa492d1d182851d2c760cb
f6c3ec9e8c06308c3e5390ee6149cea0774ae7f7c4cb6b3b0501c8aad61fa50b
c5b5b2c6a2b5c340b0a5a01b4971ad9f37c79e55594cc39221c086a378b3d292
00aa36fad01f393d793cc390349b908ed0b31cc26d7fbad8cf0f9d6cd57d3799
16a68ac74690e9706caf05c08585ef4f32b997d43259949b710a2f13f4963820
a403af9a0c9e668855a35c8305370263b4401e6f7841f4d030b865aee1f4979c

From the PIN diode (hex format):

2026-03-14T01:18:48.941669+00:00
3566c92571f233bfdcb2acf4c55037d834e311886e7e452fc7a56f310df1a586
d6f3712555700cbe6c938dd77eb8175e33e1670e642ff6fb263f541cd544e749
044b71f00a90e33cd92b5a699bd332bdbc7c42f3a5e8e5cb4877ab128067c088
664eb1f08e8e118a9ae1339932ca3adf154ea5eb8feb1ef4c1d4206b1afff1f2
6908f8e33b2006daee1e5754c9ea98f6173e57c36e580dc60854c8e53cbcb087
afd66f559638cb5888a7c47fd0c3b9783ab1053a6e4240edd6e5141d833a8649
1eeb443a6f08705a85fcfd8014cdb6ba56c06c832b5b91b4098b1ab2a67a33af
f04c2ad15bd4aa19807ae27dac70b38b3713f1bca914a993fbee399771729389
e1850f120d985ea26060ae8b3a0d1702207e6913bdccd2616290ffa27b93b9ab
307f9043204979cacb022ff226ffd8d2de6562cc230d1a8565173b66f1ec7809
c8f142084b863eaace04a500092d0712b6e79ea32146413562c6828f459bf940
4ce1bcdf94fb71375deeac2901bf553e7a0bfdc0d5d0ab47f1a1ae5186f810c3
30e69d1ab11992bedfa956bb22bbdc7526c57bd337ef9b796c93c8e0b1f92637
d4cef5793bfae9c0b54d67777312d895db73d6a9a17a5515f8a194349cbb7353
efc3ae0ff55b1219e8f8ea83f7222684a2b61c0296f726c4b8c619d9e72bb95c
03b0f283138e99a6b0382b5c7886b402aff581b725dd44f5af58ca7e99b09fec
2332e4c5344e5de8260d90062ec181bf6be0879e135166f580932d73ec3e6793
dc408d29a325cfa3820212f81c44df7c2cfcdaa28d2c7925ddda93c3b4d3f706
a4444253dd36b562eeb8731944fb4fbbd269573f43bb97fc215d29a91a82b161
b4ff0edaedf7637030fed0cc768a646825c73c3ffcb8be702de6d9767ec1af0b
058c33d97d5dee9c58b0965a85cf814711f9626a3c73c70c5ba94e118971b080
c29c9601f7467fe840b794006a28119ffc4e496e0cbb5716bf1b3e7f4c9a1b45
3846af78d135a8deab3786789df9956d3599ca57b64366c9fa9da2953d55f7a1
b2aef905ca97f2f887183e75905b18ddb7d319db105057bc80964f41b97483f0
341a5a8599ebf06b71f3cdc884f00c7aef4d0ec5be1b365043ddbb208e6d407a
1609e2673aa4e574d5289a5a99bf219957c9ae0ba5a8fe258e42d28ba9471af9
6ab6ac19a72adb1ed206e9430d630aaf120e4b4f8f796d4e04414d23c788340a
8849b64d8f431b6f596e7e9f963d3549b5186a5abd347372a4e7a89aa0376a7b
e4c02967d44623875863bb84df52fa45851373a3c832d8fd5206108a3d590c14
36d619b12db1d3d449325ea8ba52c11f6bbc3cd84f67765ab14bb50f04f29776
96b6a1330e037561010e0f303b257383d81945cd995d8714b581044d6dbd235c
36881383f8f006c7426d17cfc1dce9a81c562ef78984647f46077ce38a40c14d

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-03-14T01:26:01.143615+00:00
20317501471293694572182993268860616507620219121255
43186458254595677528392250637054970652103457336594
39496152408584828887225507301874311847456238696377
13057608889396223452300651906489204158593773582248
63203023342634251872754175794809483936724910472810
82760381064872702271329560130785393416783792611760
90336495327015977925659283078973239471209347708526
39192004917556799114019605272680271459781985589877
42334826449166062511690711753125643373021513408290
04205626721259594769727653113965823668881351478546
72005771948159399572123340005120716991578745078194
59768425335793995490746327158886733942512674394358
06122687831321487484438270351873902033141754550553
10557140872806566181631794349196570163058241115476
65558697448682112072958410421837921702922427321309
84186976243609912467829543819859755098758068092668
84708086847914475459128794776508778135523444321403
16217189013669413581805335936725844394990896911994
08067364339095586779716568899143890629490707443489
96865962232331113681045249632300896715950726332847
42182685001502997226545289758526323205341010867654
34117107651366264389174579242835906495370245367293
41257235308884026806771127600948026463054321976414
39009965590676988680619098919001903855400217981130
39375554162746861168255133049440602810697288696752
70992977174242731994960364357147147814744543770191
78039179608321417564890005032096707345292440819996
95584006484062834497736019749607590501703165119781
78986281956476656027731373595599588589769546339234
63207946007054315761216095445255444279289409278615

From the PIN diode (digits):

2026-03-14T01:18:48.941669+00:00
53023713519178729780555217361026694799651149136534
13378512129008474126842394510314004738638428687304
75131044604390055550898824666572197118280392360278
77424217385451535058217865433093320726050859320630
87845223628795108813980884608876357511855056883667
96279585205877055810666420293158347330685811081290
33282082868692083143914580093926786622517576429170
25282225721279395519886920694757511314473733151813
52946296967439581323023226051989979844622347857148
27446732732102473801983513263301235902200966087534
62700465000945071882586333706553989830436955647688
48135593724101918562221192717161748134169548572677
25469069868734871738972355552108477738552159928177
03191518491569612285216148525687158395741591182531
34383262822802503896849825438592037631194253667656
43922034800275298337687588265376593550975278933813
44064693299107355819810228474515620347644141633763
30021828682444624144213747958006646866835481988415
25687987058763678751339341692630779780149912481838
00043799606384901245182693751105405125935688765090
33297117980660159912916978173713762894565001702764
83480006401759787310128787229127622776542769567075
20536871553420574909535387826702576249618561787405
51352462174491248325168087882850796585163152269033
53071332122277149790275480678732420964222209035864
16405490539133538774116568374266396971260682722567
42300667139910751814757943210978046577359936521036
73827743672711891026595061537381240690895215146468
54605506239241037035358899873282693319156350820616
38618912205425774577735094688682933107886079031890

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 | support | Alnwlsn 2026