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-10-15T12:21:54.526355+00:00
2b0129551960c7d39c33c45ab4e8797d30c185b265d2b9162f25d33d82a6d028
e13fd084a960654b6c1a773ae664423ad7918d996d4635b748c9473b97f7edad
b20c87eb90bdbd739228d6b9c048d38c5e290fda964d28df2089e22746473dd2
4c35ec719c18f4da3292f5d482c9b50f22674d6998b49a2278848b0de82934d8
3def16e97cd1a5acbed5db87d69b3dca4bca678265b72ad1b1c31b7ad2110278
defc72a39a7121ccb1d6cb64f12765026be2bdff16757be2beb15c67d5e7ba3f
2dcfd143addf621784b812198b829ed94da65afc3f329172ef1b67f211f53003
94ea6050b80fce0248021dbafd2bbd0e41fa38bc7bfcbb4471b3fb307efb41e6
f9671da7334cd3ee622178ee3476cb1f5f5ef1893e7e75be3f7c1b8128599bf7
23d02f9e6c74133200aeed228652fe05b3e1dcae968396f5b1a07d40c74ae026
91ea95180f17224e033fb9cb7a674944ba6e5ebbb0c16a4739d55dce11c34a6d
1ff4226adf89defc78e684849ec454bace5635a99cf434ae5dc5e90bdcdf4531
4a15a7871942a5ce98419e2fa86684ab1457c5d6e2ced210c4eac11a906fee8b
b43c954ee194d56df67fa51baa73b2a598042436ac41756865c237d9900a8fd1
34f96cdea76c4f8d59ec3d01c583cc05b8658eb6c0e55dc3ac94167412967611
bd3d5261fc6743269f8cfa58087c287b201894bf07f7f49fc276afbb43f6456e
fda33b7071fa3184b5c4d9e098b44864a236b89fad2163478612b4595398bde1
e7b2061422e2e00f882b43e0de8d36da1f822a5493d520f7d23ba70e6a04ea53
d5f4879b8b548bea7fd3edd70c2b454645dfa5c2db4065a59fd4525503e411d5
6897bf8bbe14a4caed8d5e36342779796cb2429763d8574fa360c244e785ad58
e209ee9f4922ba904308951a7173a2d51fdca50f47906969c6ea1890260d0f25
a2ae6825465e6e3311411da372c74c29a87183b11ffa2f37716d2031820b547c
4b6f89f965882dd1bdba55d10f2e93137aa0a7f4e93679988263a377e54b72c8
801d5905517f9c9b3c74fb4461110e2fad3f85295028be8cc13ca4024bb2c54d
2de5738236b390ccd90b366beb5737d0e3ad6c670fc22a3b4e3886b35ec8fa5b
d0351a9ee45c473fde337c1a816860184939200e34325d131e785fbee7ea2b2e
220153a891e44684821a8197783083dab77f26c9531a384016dd5539bb31ffa8
d069b7ea521f70a83009f7d469e78860e670886a3437d4232030106c8d375234
e5b0de3b755779e9fb33ee175cec5e0e75e7f126ed3c08df8fa25929e6b5410f
353d12a507f6d53355674fdd77976c04303b11b2bdb0dfc3a96e200dc7f382b1
a5809beabb7c9ea18488e0a25c1d4d5df1ac8c4c7abce955ea4f6a5ea9d47b67
a49f443931eaf90c3f2fcb0bea7ae2578c916669be4d46f43830d00b2fdbb0dd

From the PIN diode (hex format):

2026-10-15T12:22:10.125911+00:00
cd3977f3410a06cfa8de979d9170cd6ae29a774ff8ce87cc0079bedfcf3e43d0
5f1fd93b5a698b2bd6cf53686bcea2813d9204482c96977f7b837b63b69c2f0b
ff2da60e73788972a53bfed966e1053c77d97366967c1b931dc84cc2de754cd5
f94f5dad4356160e18530b34c5cd8a81bc1450cf0faf0d28c7a7aa083e49375c
475ff16ad8155d750ce5879b33bcbc0c0064b5b6a6db5da35285aeecc1ca85d0
00cdb8091afe86951868923150148d6741d3b125b91a6c12ca98c8dc8a623a73
ffa7010d4c9d6921ed49cb2024dc6097b0cb2f9dfa1d22a0f0ffcf7a568cfb4f
99353b461210c1f354c357a810a43b0a086cdb1399ead71f939917ebe2f67b1d
5cde20ec22b5bbbafb0cf13c341f782e5eed0a37d6135542ee4870629a472ed2
eb63075a5b8a6da9526b5ce86f1683aa2a45ba45d56de451c458b672aaf4ef31
2349ef1587ba84d63bc2bedfcaec96dc383f0d89f591defe02e44737f638a5bb
1364235783b3fd517cf37e922d5693298af32d47e2590f0fa39017c3769fe0f2
560e6b59bedeb0b9503762a79b6e6e1b488e1c703201731002b8d8bdfad0befd
f63a60255cc6fc7032f100164df040aa9c98b5c964f9595643e5454b0a58ce93
af41477821d457cc18b28d6ce44b9df97f70562fe04cc683fa738715762fc65d
f00128a68ffe4bdd14d84372940827e594a4c96c3af116ceb4fefb04c4b93520
c94d525ec612aba480ded35e751219e7e5c3ab3754104ede7ea50f7915603b0e
2d38f3afd4c869eaff06217d2a0f815d238862eb0f03a98e350bb926b49b53e6
ae1dea7b64b3cf6abb57582ba490524d477e2e59e598372d186f562e6d2a476a
f09d04a667ae7416f31e0d966a80513ac04dd6dd0d5d0dbb2d5ee8b7e8eee876
cd5ca157a09a12b5876183f720ff44a4f1060f12ee8a04998c6843983f5fe697
3dc2d5e9f753656140c1d642af39963e5a464af55980e70cbd0ee5fd3ead4dee
f427ea98f13a034c333eafe63ae2edef456f67e185dd216c5b1ebf82661b03a5
336e28726a22e16f81ffd16c4313f75dd992181c6356940c2d9a1fc7b4f0e978
e4fa4ac598fb7e81ee33c626b835a72439246cbf81a6b1ab227a73ff74364cc9
67215876005fff96ee25e956d54af97000062bbc432ecb206cb831afa50374a1
945c0a6d4b0012a0885bfd257fd7185180be6c151219abb7255d058d85137337
739d8fbd259df3de1793f1ded2b67c8b72d2a96611b9e36c7f3e8630db641f1f
8bf31178f1b4abdbdaaca9799f9fa81b118d20c479e69c8ba40787d56a09344e
b3ad3ec4a72a3958d544a3d86f0f37b8c08bff3fba0ea0ee71475258fd141af0
d42a83f3f1247bd75a6970872231b9674c0f3507f55164c7b03992b42100935b
1568826feeca919995d7ca1c7d2a68725255038e6c75afcc49b819ab5883dbec

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-10-15T12:21:54.526355+00:00
43014185259699565196908021254893337801852247376130
66406332699601750826195800665845415309705383727159
51737812354489891546408592724094411550774032373970
71617653135624504630811534037705528054342032391341
52612224657290355561750330018342779527221702201463
54133377003901020789221723907792038663456773982332
84182539305877669063504514270317480348968084150272
02298643891465568823876813794826650329675176983320
52183195943762261790632427294089553547580816195000
74343482057974503150776025649974384549241523347803
63852203736886109487769306715793179574093134063720
32325896848686536956527493971169497421673525666552
65584768023271208797169693264411398060497848092765
27701578655204365472651704019455441043520867087941
89610197310584014282929395724822161850181789618297
03673859408808244023322448910759941875876769106359
12134932819652807200625484597333997134188089835289
78062034153643674154313042844732596714060483355539
84392712436970696594640165598285031704519139902064
41945452392121087866519987796396946833738809597334
86446708492613156231651571440505982444381315376274
04377094105117652963149976416813317731475513093249
30118424751137013645898685154647192260675421523099
63197514282989058127565560166897171447736333418040
90409360640275789777451530547944115407875573080315
94425978563479949153265892716351242629049624735732
14525093193020959043463401836845703230262951204831
83273883265664228557874968058382311268480905369612
36065255353248160841558252765917872151239294141738
60084362894181651553611865075185037919510804485917

From the PIN diode (digits):

2026-10-15T12:22:10.125911+00:00
57196510066851574512065419793500219062679531599005
39438304076229614604724450512723312399825647114566
14152037146559020560191502502427472976941776799373
67862214248311529738298820801575134099677008627355
92719506219317123555518888120000818266936382337493
33008409263449240446498020410365773785260818523898
58156701137657053373323696517647572934602286407953
53597018169384958768166459100808195331475323232992
32348187861260523120469410551985667212985471469907
90913809698207921122317042698669098196888214704935
73213586325994905056631337450271555665871900358731
79812426464586474138457189151563442395185986140789
90768580559867551010277242281250011516028489905896
37929812500022776470565281008986676975108847756571
20338724784108755727128647769831153521184798930140
66437520671448083948640858228004968553327782949818
71642894171825957155841678266515212196591445567505
06332542152993353698150369425311853880558374292300
79068787884364448277712646895255452411864609427106
57046603741622301350062881589277139313874594831892
61876054188135973132686406151838045340046752639551
61948301976493667557506290707489281289146273773952
58037651627558691103333308913091300227036551104014
06341129086719934624289986481245543199802074975226
29519838845367365736089129667771342215165476033388
18009550378674120006438867463208844975650316614892
10097500186036913727248128900821182571833793054133
19155515574389375723478224391469021785082762344800
31313917208071726921595968271741329621563964073506
09527879736296674257886863111555849239638614601371

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