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-05-19T00:12:43.229368+00:00
5b93e4756d1507819ec1cc6120ec9d2fcaebf8b7b0ded1174a5d861e3aed0f45
524d48e63a8bb8172f42099e50aadf6721bf30eeb6f75c3332ec640a43bcaf0e
47a1855ef2353bf58c821a02f528bac281543fa4ae10a7c371c5f51a9623a4b6
b13f367b9239e14db3914d9fe4ecfb580dbb32f4153356bf28e0fe479534677d
38ea7241d59f6a3c9bf157b916dca6e7fc261c0ffedb21ce47e66aa651080b3c
187d0c9f5af6cc5ba0a600847b9b99d8a16cdc07aa5d4e8ef90f977d24afdba3
8b9b9dc7ebd3b3cfd1ad6bc3a414ec6dcf5f00d1fea91e4b033d6c2861b7a9e7
15cfcd8b9377b5313d3ef6cd04bafa30eb6722355c0e6b05f5c13b03b2ffe58e
3bb91804221efec30dcb43ffc674982a488dc38114ee8b36043662d5ef06c9e0
4b6fb443cc7274bb0cc32e0e88d9673df9f72af38068259d5fab4a6f2bc0e757
145e7ab85feeb93d87153d623c1902b05a397745b7d66f0335404c2b9b10b637
b9258a4e2b3c47dbe9940d36ebf0e7b138e3b466e188dbac7386de3505658659
fb483c257d47ea5cf552bd3ccf093e03d6f56946c19429f94e9edef0b0da616e
35857cd4bde051469d5fe230b5dc7d327ff24b95d0b72a4279a31d909c4f04dd
f12673c21b95a567ba6d9bfde5b9c91d868f99bd2c59a082dd513bb8481ad780
b0f17cbba37696cb6838ce888dedb1c446c339db8eff4d88cf664764a3a818ae
a397595597bf7b4534d73e4b17046cb339235c8cd5591de09db2c5b430bb1c15
d981eb5ace3af5ced039272e310b5b39682465cd25509f6d420098d28e003755
4b12e026acec5504bde0c509cf6b9de1198ecaa21a5778ca3da5425528b7858d
7caf2b46a0807a65978a64dba7a3d5a622670c633b6c8d0740eb3bc1a81862a9
f7784dd4d63f04faa5983416bf1b3c0e478de9cf04d9c6b8435a092c76c1f3a7
66d10632c795e35c90f529412799b82f3bbcdb663294eae3c6a27f7f0fa1ea51
b115c837cb8400844a16114df7ee3096fd7d6f8c950f02780eb87753848c3af9
51cc8adb39168e6ab1c0a2cb74314fa2c9e263675af125889d088faa36214c6b
cf9852c6f31976522024d0bb90d5921a8a5351f1704e84c0f624f60c63d447e5
5491406905a3280fde0604963fbb7eea889d994841398c7bb2ac30f00e2b9092
fbebe407366e6c01a93429f5907d672ea3679366b43d536ed6f48dc980fbf988
e1e6081b8392b1026b1aefc36b0f5a4a6459abd6329b18543548b2456938d0a9
2988a2c86bb160a79c05dbe25ad6975873d9687058b080415889ba7147ecf7e8
11f7d6b52bfb40ac7a66b019af8586816fb5cc1fc14aecba9851070cd4f5d068
b8c86ab8aa1e0a700440d78d412cc191f175b436ab99f5f94d0b5ac109a526e2
7b2e30ce083a58cd9b305612c5b5422815baaaf8e18f012184f61356f631e5a4

From the PIN diode (hex format):

2026-05-19T00:15:09.630463+00:00
627f649fe50c4bef52d6e788e4293199e25751f4d0ac47194313df7371b3f18a
496ebc5c1b4bd1d6ebde0069f125a0e5e4d99023d6a65c4c2fc3d9b0d47c962d
d33bd53ed6830fa8fe4901f31f8c662d0bc75ced672e997227c5deddaf000b1f
1928d8fffe3358cb9248ff1ca22c2a9389ce9f3a72dd410402eea23c8c9f27f9
9478ac26914e172223ac8b845541187d7ff3e121ef1749f5aa508e82eab1c0f4
c7515ca9e43f3e2c718aea6672e6bee8d1c9822b7d3c67f03a71816acf5bb7b6
0cda265edfb374ee0b1c3e9c500919c34679900a5e612054483bca5679cee4cb
8e0a04a35f31050f3634bae9a754e2e92b016beb0f08f5ed60ee0281c9c2a336
90bcd5d746d0eb4c460665c356fb26535fb8fc54cae542881639b1309210843d
d6897844bf1365b42836ec0cc34ac9ca7fdb4f3b98f6f338d6cf5383fffaa17c
53aeac53cdd2b2dcd074cd264d72281363eabcc7a280477eb19bae43c8e17e07
83d8c44586c5f745957d74b648fe0d36cc7e63aad91b06216248a07335587435
f6b73d86596025f95664895b50357cecfc8a935a30884814dc2a3a0b292a9f5a
18877a725863a00264d88649b775c4e09c857f2449133c4dedf1964708b70075
9df4577bb4114bcec313300a5b96a2aec6956940870fa0795ee8341f73e9b0df
5eccc75c2a88baed758adfb7d3dfa758a80973adb268b7e44103622f2b53d34f
f8bb487e7a07ea0a24cd0461fc89dc1a7e03229c1ed6fd59c86c57ea8539bd0e
37238441dd9f4c8676ac7e8b19a68be32e5092fb4812a1de7d025667333b3e9c
dbb8eb28038b7caf779dbcec914350fda7110143e8477eb8a8328e6311445c47
0a8549d05f6b81d72a3ccbd0e57aa543ab453551ffca3fd27c5c6b9320e3bc0a
1831f6c1e91c466b04866cffa031e382df04358278b0d8b5221d63000c3a68b3
6d2448050f88938d1f3c00a6c8370e03ed070c6e2f0336ac67c69514e44e642a
b6fa72928e6e59aafcaab2c91898052f92d3b35696912262ce490602de6ab1e3
3914e7cf39fb2318589a54a6496a6834330c95d3fbe49e7afca08e45b84f864f
08dc88e93164317b8cc3cd26a5004ac97ec22818557e29b7bdb8c01f41a64dff
88aefbec5bb9399dee16f9242cde27694b1105c9d90fe196bfe7c5eb8cc0e1ac
836f5c09854fe1d3f40a2a5480a3c9a4ccef0f29039953277fb223558019dfbb
2149bcec26970c868be2dd12ea5db2b36ae59162025cd5d21bc847ba257d857f
d8aa7b50d028eed76df23299e66e742ba67ea417a6adedd36882b42922353c50
92b9010fd236deff1a5c09b73e67ac55656730c40da92cc2def2f4109f61ec30
54db86004890e981551b6d1188d3b88c32dfe1ca051be4febad8574314861fdb
6972d540eaf14aaedcf94cdd88b60fbfc7be8dc08a0660e9e9ebda0c64eaf26d

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-05-19T00:12:43.229368+00:00
91471709210729589397325747837623749334305815698277
72583984234766095880700333914882925150001067887514
71613394535940302602408694298463647416679513972650
35648277635423465777794577598813875021518691407149
52032556146559066055878522663828153371066681081160
24251259909160660032235553610807709378421551253675
63395557997973079564200995006930750361084097836921
39471981496162048648033453921407059359037842598524
04343095136798165242724195292039540454980675118067
14168712954614360361422804375795717411439287209422
84958561352161986025027690571969831103536476435516
82558537387843607148135477568002367215345305013489
72603725719282896009620305709348417858769710533324
89817057954881255027754983426621632944567904381594
27496503860955852934435389448960308159847226287624
87631850045636417796709557427736027100636824746351
89855191236952627523040879573592408929577897804887
28212990585739464911915704360137805909660052420055
85751838728504899709075725426226872061656685408333
41247543706028220151380067636634031299590841076459
93682498692077630465525222912760147141049884679009
44189367020650994992444165395384475988025048986227
27156181772155320032742217774850251140491502201484
19833240588138572242067792621649796299039037365708
43705433760752829825188232368744462638838112783292
36129971844564050563401506045063872636575372655740
23787248144344460754100801695241442503466303470280
61831041283608273146770207269507159074008971505524
84537278690556694136620777966756059051881504128876
28658837861371178143647222027625753334291181319374

From the PIN diode (digits):

2026-05-19T00:15:09.630463+00:00
98270059127582364149538781727125671915137938731088
92277500053760443566927647957624504559623115687301
31400245119992034653143997750011312540518846722862
44424737595814650402626040593948207238457823343572
39328565242527332373708042307792998192696362441338
02149030432560035813290691838212389479161128625680
09259570214410949732847259862142100463954905155452
86678443010715089602299463544488707670060195863883
95848466362257774846163261372068911901804054129574
27795952568331612483747283781638771440199988996228
71267755746726073196693497694925168272135426997027
06339872601553881653836134899637860037918053243847
90483672204258114142599024352214889960020034738317
96563327367319607750710883001757872380177595194810
91506274984905643515602194523115769499924236861738
83678868091573780483650398474383798772262207103604
97372626033456308908873357891455353265597634187226
39256639468046721861250286035159625684400339247519
57884567806717016771268468504299176892711033739507
29426022656771695381632492074732881024499328700704
34086049300453302076813429990012580479093672051536
47413160006655140307121047035472039849207800428214
46421089707078245205474679865045349873060206775720
57352488548466730604525112495822604269847934790836
49004923409538650074269440248526418389849231656677
36749185575722364439057517051550919740927231119209
33791042842863641541035383392778358528258733738838
51123439189378790645980292277186372533277023804009
50531016436626642366730430804134536080468501155426
92098362037285010348961369449416599748843400724429

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