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):

2025-02-22T23:04:57.896533+00:00
acdea886aff452aa2d4af914913db1e4aadd4dd090a88ee988dd961190dd84cb
7e68823b9885f0aa17ad7b528b1593fa80bdb0a48a0c2b10cabacb32fa853b96
8810e81f4a4f09216bbbf93582920bf56ad4565acf71415516f8498deab5f546
7ebdf90dbe026c8fc06d2eed845fd4ed57bcd3988bb656531e7c45c5ee228134
48e0797d024f9144aef75cc3a733734a5f239ebbfdadbe8a89932659594526bb
54fce218c73c7a25586c40a7e9729f48d056f3aed0e920113356636aa02663c4
7e0cc1f6d27986523ca0f80ef5e9c2e0b8e703f74d3d746d14210de69d570446
aa7ab64f10d094e581291f5d43995b8e54faf9d18cd9ff5fc07d58b34325e8da
d1b27676fbf2946f24dbe7a00ba0384ed209c4acc7a4a5ba943afab4d45b091c
3cfab6399de635953543ac6ee7e2fd2ab763ffd08062037142cc5cf436c3e67e
f434bdbad4cbebe05e1328758144e801bbf061e63258d40606ecb72077a0b879
fc1b6ef51a15cf36d4e70d3b1df3583227c2b241ce5512e5597652db53587139
396c19d222afd79f6b0c3ad82a94f6f0cda93f938d373dbd319327c6f407e418
1b2e0c195c1cc1fa7de9ef902eca7ce7ef84ffec8a91ec0426521943d8c47295
f6cadb1d649dea58ead7f96d96616db28ae82a63ce0bf53afc8b5cf04af96b82
a32dccfe91614777146a3a019b85aeb340ee6dfc47461438b5faaa054bcad1ac
744a066de1596f3f1c96a90c72884416c752a05a51fb6a71f55bf6f6669b5a76
5ebf8b16726cab798b42680c98436fdda44de8c55fe627991a53c460a5173634
a98f71773e38053cf42a8e75cd5c852289b57cfcce39e887460d6e7c203ffefe
4565d8738b7860aa03a30c5b1fdd1eb6af32f40967b0b9b2e1d8e25ba2a9fc6b
03b7326444caad50b3f446cee147efadc111eabdd613ad30fbc4b8b2083366b4
fea7891bbc62789d16aaf9c95b64d5cba7ff3a79320ddc8dd695878558b3d824
06ae352bc5c0a5c383df32ca19eccc455ef846e776945c8e94d0a6549d39e063
7d8133b4870d20da72ad1680a1a6e7974aee8ceb46fa7070e0555790f099cff2
a1d5873d0ef62e2324bddf4626cc2b1a968e72998137bb438c64e19d750964bd
7232b2f927b5cdb278903627eabb650d0992f8d5ee8186a9f7e409b3d95cb022
eb481fdf02dc93a0d2ce47470bcf9657f9e8191a86fbe658c72ed5afbb7af9f7
a59429d4ddaf24a54bf226b346de9f261140dc21e7b1e45ae083f64dabbb055d
eb0052677d4a8a53db19cc3939f099e251e69b0257e8eaddc854e1476961a19d
bc80895049754a3e8d02a88a0a69d922e7768db82fde169dc09de3ef0d307db2
b4ca12d666a0dcc93487a9f3bc8d4fcd918db8e9571e030a98592ac5ef47fe29
a0a6af9ffa279723a8f74394ac0fc823d8a25deebf967d5f4a62b41fd6faa7e2

From the PIN diode (hex format):

2025-02-22T22:54:26.498316+00:00
99955a3a4d5944da85a5f83126c60e6158a39157c41da4ae24d2c61b2e824b6f
bc414f13d5bbe0d258470e4698863a05d22cf23a5c5c315402bd6edfd541072a
9b6477c3b233d55e430acd7ee6810a8f4b45563e8d83daa4c8e7d5a1dda523a2
06a12f23b0b479a62be36e00fb79871a01bc7941a111f5adb307b8e0d768297c
47ab805976c79ee23279d6e91436006d43a85c7973879de2216477c761f5256d
63b66485ec16cf50fb538beab5df953b22b8d22b4bad870ffde66e7704e775aa
d5315ef3b7303e961435522cd8427df46a23fbe81f6698b47fb9a0b614b8b9e7
52db71c6844d98730ad63945c658574d48e003704d7c4167572183913839453e
044276dc43ef4a158461061bec72bf25911946e3a4245819120959c0a30e345f
d7b44543b5ccca58d5852867014fe8751ce11e16496571d9b80a2b8953107abe
ac9164797e40ec52a7f6d56ac450b13f6d81e052a334c32c79f41413b2dc0950
3c06420d12e349c96cdb49e1ae8f94b5956bf0b97020e569245a4fa55aad2369
ad8cf5a5f0c8d2fa89f1a80e6ec5211b8806a8b339783ce7c6a4f8095871687c
5c5c1e1f5a01ea5865ff479fa65a78bcef7fbad3baab1e0f431db581ebc26828
0ffb7a4b701911ffb929386dcb10c3e12f8b5b49f021329ed1a8695987149e05
1a5e5526f282f5157ce2374f92119296a3823cb3e98fd7ffb6ea8ae508cf37de
e2cc93d92fc2ee0143435cfc27db62b2f9b3d988f242a6c83e1ee7d388670ab5
785bc9d455fb23b0bf86d43223a7aeb5e6359c3c6e870bddef28593d2a90367d
7e437b74a6cfbe3350ea82273586ccabd80b43f50b6344022adb05def2dbb0db
444037c08b033e862fe8a15fb11be0b749ec11b2941a17ec16c94de01bbe387c
bbec4ce5aa7aeeda03ae9adbc52de1eed05ca0fb49e2e0ac4a29e87ab26a6318
ba402fa49df0074d25fac001d7369c1840962e339f9a9378b10bdca39bd1fa26
49ddf0036accfc847f85c26f38e2bb6401c24288aacb212af5528e9db0015c94
855b649632ca04160e1c4a53e78c57334c1cbd59c888676e1597118d8154ef9f
0751b98523b3f432e7fe4e417d35234b93cff5dcfe40fe3157975b21e1245c92
26d74581fe7b4fe44dbae45a9134f9c5e12dd8d21067a5012633999de076092d
308bd7398c072e2136f8929ec23136f58183cecfd3f01ce65fd6460efa574e71
09336b4396070bdc984f6de2baecaee252909f16c31307102024aebf5c669a4d
3ecb34f1adfd572abb4ff17ee97b5e12c646a10dc1bc304633bd48fd9e860ce5
a418e61bd2e3f8a857222d269669e63d60302d6bf92a0a4c02624a0758b341ac
ba45db9bd0808a947824bef2f4b7426151c9b7f95d2685570e6faa82d98e1799
2f1f9411303a08f5f2d61baae3e125aeb580789942f721b586dfd1fe008c3088

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):

2025-02-22T23:04:57.896533+00:00
72683475827045742045617770774468423650174432260430
59523370237323823921472889766438124316865033595036
16317479093307875330461106869013658522734181702689
13900208439209463295878852398286833024699734295272
21250279456874929567511574953558877390383747388989
69388784249960223788086467145972867432175186990660
38999626129321348260601494840377611609203313578704
70702282791648294131936753914284409592258879673778
18184811366011605678099672996465864858809109286082
57575349536772104283992898031366925495265289869419
40172968018797508806068332196084212710262154135929
88503994786585188918828388135757082534755907125842
48696347415561894947399807242746122592289325444624
32384504388225679614492900578809509709783842991158
39927407306345459771192006580155337479640971702056
81700575721674060989116328506912143668229982609081
06139102559018949139221408712139660412526711647797
95395326839696652354526943131962560560424217923334
37812457357013102432636901153920967003631291313082
75500903768578916269070383500068738079707173931789
19734896847808510280673727889820572270910067582150
13414935338879360674534397926595315025699470184892
42486684575799252951803513321473222861665174407012
12858744536135611446353689703843265042145329558767
40005717090089145078398178204454398701130946293469
09799276347231024760717111508725263488994675872265
48417536657538797059381764337790317771870593008203
25743883255757538155028784710597615788283780731774
62410268381005341841844722579257134825788018026052
35698841794541848730031052894297714160667559395135

From the PIN diode (digits):

2025-02-22T22:54:26.498316+00:00
53499058778968336549389814978863458796296474369827
46307511886579198788711470523458054458929249840289
10650742550019957851946710262910437569866241316461
65356206614735768021664310002135260188216561177379
07840441247171288918995850212054000967689221153557
33001999973709998200332280833981495934844375733515
10190417704994834862502053824466250635310252802785
60822084858213983277521510576998888777720312772465
03873331455657696204661867742132970627149137452570
64368825180989926314529580696781883340030179172830
22730113841043378316229072450021266482670696807763
09298263529544212019780980600666131873087374434881
49078512320536907965907335057340653768141097332736
06687957206098640988130424929230319001880171596690
20882786867130156729812994044015227512251785415609
16954739917333505868058935205805269485383021245579
46174650633060794382380855474794016767923998787936
66666230360310812091853576913450356774815356601035
11408961424454252667231666905180303953347111671199
68024205766864559239036234476195772783731778482623
22772790562487767022037454974592607372744122780699
24866447645707773792015456246450465159544720771163
55387303063227339411568700019466367033428242577601
92483391005050042214287483408751762889893603102151
17412984590781853335795078652553357547644987519133
36924638692923797786904552974516036501385153571809
45483957400746335446589449542931289570148778130951
07675007115279098674824459229519071632367491920254
77625273874287792623941898706113938848705189725834
12642427688734453850056196484507421076029874078879

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 | Alnwlsn 2024