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-09-17T07:25:04.313381+00:00
27728272bd3379432996ac51ec5975ad83490ba4bda09566f7ec06b9aa1eda92
1b1f5b29b9ce7c9f69621d5803cf11f3756e2741fecd23389013ca08a7651858
09faa2f477b403bae132a1f31d06bb87efa7008fc2edd8d9540f5cb310420b13
a8e8dc460cbcc927fccdc8fe525639fccf3e096ff65416b852acfb4ae850f0d8
240a98849864d36c4d19ffdad3b0f67ff6194317099d544cdc4b5cc4555270b2
61ad4d332c9d8e786230ea7bade3e611a8ba63305a20547384ad93ba84089f3e
7a0c0733a060cf28a49791211a614dffbd1e49c4afb5d8150ebcc7df59390c2b
517c53ea9f7fff7510198fcd8f59247051791aa1156811e55b42568492d45e35
6954dc86bb1b5f7bf40bd330bea0df334883c86c7f903fe1b95c31a2dec6b89d
cedc321ba854f66784294c5c61289ece2e3820dc3e6da4de422146aa8fdadf03
fdc77d915c10ae6a608ff547a250bafac43a261402941d7627ddfeccdf5edc1b
5012a0a499cc9a26a0bae7dc2bca67bff00f46002f5c21a05fb379113f7df191
978dee149d7d5a91b32c3a054abfb59eb550fb9936217597534af5d3c9e69297
4a4066e179842f40129c94e63e0f07c9feb1465e01d6cd554ed0d18656d39af1
0c0f6a341d98988f1aa403e62cc0e9439b09644cd6df41dd7c6e937f7fb500a4
f7702943b0862c5b33676dd2e1153192c32013383e1129cc5c1a210cf7298346
d4531c0803c67d21849a28ef1eb8f2e6a2fbfc81099f33d5efbc98095889d5cc
8891b41d74040537a463fbe3d80a8fd7a275d47e3ca10e4b9ac36af6643f9c21
063a1d5e42b9a864eba79e4c42bc43c3b56154e024f72fc28d48e591d69c2e71
0b187e3d6890ad2b0ff70bd179778b0b3385f0670df7f828e2515fac77c834e8
b667175966a27e82b6e8272f588d86bbc8d33ef5bd6f0ee6994d6a79ec820590
78a0ee04afa33d674eb508f19895356a26060be87e2d0c11bac033bfee4ae0b5
3230ac7ca6c0e6f6a1c5e8d882a99c86f879bfa1052acb5f5c65b0fa88071aa7
6fa31eb690e70e0c6c16bebdaa3c3f2a5bf0c44caa9cbb414a725d318f178fa7
bb925126b66a135558aea2feb8e7cf932ee2f73a6777693a09df1a972080d271
5a5557cf1884a0ad10398935a928e6c688d0e71cc5a1375a916f297612ca2d55
d49f60fe9f611dea95688ca764b515e31fc69505123d5a59d70dab787ab38c93
3e1e4308dcb630d0792100099cae959b19a9c809ca32a6c92cb50fae3f6de36c
a85e99f5a241099175e605edac32b2002eb365087656c33e5460107d73bfdd80
e084ff73a0032e4da8ae8d0e1a4e4578f7383ec57e095db4bd659203abe498c9
58a7cc9c91574bdafa1c74176f83aa8301750030adf778b46fa79c6e3cd7d55a
b42b819811c46273f4021c3d3a267431150102e68b24ccc61f346b5b0d434b02

From the PIN diode (hex format):

2026-09-17T07:14:54.510829+00:00
25838f45966949976aae0bdd21f2553b0fcf568c1c485543a096f0f146bb4a7c
5aba2f50bd782dc2f679196b2dc9845984dade802567e3c8a1cc5640965c83d1
dc0a3436fbee99b52c47ab5cf6c8c3023dd0110d76bf52749929c6f6cba8419b
d0e8110cc02bd29081e780476d5da66004737242624c28e26276b51050c3e0e1
6e000903dfe8a8dee984d4b9f0d718d7b544c435f9627e20e682245eeccbc24d
f381599a995d310e235fa077e9cf03351862e1cc682299d81202ab93e904987e
37f50d92bd8307f60980c1c460c305c4ed001740a96adbb8f0420ef046590b4a
86059b2cabb5e8dab1b16c9666af4eaf3d64fd40600c08a1437dddd4b38fbdb0
c363985af2b06958a98e7aafb10a0172de4db941f5eda557f86493d5be60e072
1a62728c90b05dd8dc322644213e6bbb548a32774bbbfd5bf3bfa2ab0a9d926f
f0c24f4ae8e8bded24bcfdcb23b05fa6cfe8f23f684a8bd8b75691eac0a1adb1
bcf84e7136baf080337484e019e4693a4f0b3c2fee6f0294b37b68fa651e6343
ffa9537ad036df33ac947475c34c06a1263869c9c6ac382f14d5cf2a49cad95b
61b27ef3bd82085ab53922e63c56fde0c5ccff4a0ebb9130a9183fa7c0d15c27
3d5a57deafcf163bceeef1d6d0be2cb475d145c7ce34c168d21646dd4c1b0ee8
ffb441fd32e49bf11a86105bde6c2bbe436ae93139492b0f97417b0e54253fd5
0c21f8ac78c60e9f198785af8a20d4fd2897977661bb5df7c33ec3c2ff02617d
bdbeba3c0f0a7ebb3b9276ac0da72e52b1c097250e6792430d030db785dc3e77
98324c24124e33a37cbc6d19aad1ce63866eeeb14c85ba8ff3b9a747dac9cd4c
db2600c89b33eb516bd32f493d55017945b5fae00503c26527479d4433f649ea
41da950c0d9d2c09874d78d231056f2a0d6717a708f54f0d80ea9db2fa48da6f
9fb5fe3767242fb263bef4cc9fec203db6fb8617dba744cb65803604b326fef0
c93513cd47bcca0f86ec0099d5a34333213d204169f4f4aef284d8b6f5288497
603c92c99d8c5dc2a20ec924cc0e24f8dbb530dcc925f96900de08427c9fe6b8
843396a574947727cc6160e1644f7411a433b2aa68f9fe8a27c5a55a4320232a
41db4b805872e6fc26614d6fb92668c8cbe4d1e7484e43c01ad5a608c2f00871
7269a2f16bdacc5819da1f4498ee8ed808176e95daa4dddcc759d65490f83836
2a5589365225e08b8174a660a59c88c9764d0e476fd653fc9c59b686028a3d81
a24445f56de9191f46c3597cef7e261ced731b8ceed09e9a2c5ddfae9f4f0628
7e8cb992824e1ca5fb2fabe05823010dc50236153127d47f8679b4fd1753b483
51b5bdce5897676312fe02439db522c631226394dc367afc3e784b00fef0581f
8d9ffa73fc2adc2f69dca70397cd2e29b22ad525c687b74e00d10215d742853f

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-09-17T07:25:04.313381+00:00
39143014895121674150728189177331731164896049020685
70304627319141852459059829880317171039653556441908
67012488096219800386506129068735670043948415927916
66111968701288398286576209118422848272748036105232
52000877257627256723095784767592968582127897737751
44574220984823731768869948903284153273478632085962
22120751609640645145332697778930739675812114889989
57124381248359271716254343893612812126612104179166
86324694530584348727952311489060517231082744638592
49629884575027688403324176929740584656326209646633
70704303992545921674069643716280869658382002482918
39942780186064535438608643039115700047923360957921
17632545514120572590457944580574918158818053543317
51837446517464022132476418564862150777709401857834
86541215065229525243266403449267550900766524104727
27810064124167763444915103092149469532195662174192
26331241317083280803982533325440308462290959518852
09883736458029160405556499104362172660611475549506
00635633065829946685680067587666886795819784364794
41724556461311242661044473431511211939115133031340
81957219528203238902622630823947884134876289111453
77062130054420600475636103788108524953063806112645
12178692519174815048722466926197306956342191610542
95920176360726671163308244141208229089706063429196
76705687657414934943234367874681388206198588746284
47465803190558092651322813908587243260731657375369
40983628976155904511411818458559965997294904406700
81213198490518619089137120227940476230670882482133
00095674495525690950664481157463090868945362650945
17057250780046790108188695628496162515912832156003

From the PIN diode (digits):

2026-09-17T07:14:54.510829+00:00
37314369500573510674113385591586402872856760507087
74249086478089204594212507453289322837036186645092
31105254538144717192950261171318918216534198686555
17129243442928710993669604151466987640981881168095
10000903683285248168965398263230369494772989545393
49143595601903532498043453180271470452265513468931
07092893969695059600236469068466147089117434055544
71817777085002757875610064961208616725794389769599
52907605886942227577100114778565658700479096142698
14404476935038683362078784385019758791916271105746
11947974893688357695666304743983864592617377887813
54862851163225055879116047110248792304013099676983
22545172481617957606613856059872564720427391977826
89300890815734608697741487454869246367929239619087
75225990448017699952930422707627148065505526341691
08439067064957734315516523148437631233722098145925
35337538324051511897879395629594029725899086601510
26875946187213674682779251371403466713031383336219
52507636187851632488092570993410777633864385677176
38005551810747736185012169810503940139715768517365
49121357440935772049051142130323670879132857787211
59815503364778999059326182342367680128540479385319
71881534005363675133613265057432824032519660465740
93946214361436814837050008662459843251506516481939
97960079161764517870043839976590673235426575288814
38977711853804727867922666089408131405620788253168
52420823104964998984445654428537548237392916669665
56361877147111835689823402386129626869092531709589
24263828152740585444937459790640264085463078286547
71883501139702542149392734218023838031818189885103

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