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-06-18T18:01:31.753555+00:00
9bee9e3fd8d5c26bdbfef70ff0dc4cb63372ee24c021fdab7cfe5a12f989fa6e
2c3f1cf0b54de0ddd8a1f9df091ec6ec581665e87dd71bd6df71db4b7c03f834
6002637b539b9cc1e2969c58169ae7adb50f870326c069176440c852072d8bf7
6976c0c2937e6c4c06321f2e96f67577e32a6d70f87169de3a3f506fb2998d33
d70c964efd06bef96e0183adf4f6a566caefe4408be5ab4a427fb6613b8ce6b6
7545dceb4dd37787e992633be78e57077dcd68b0ce3bff3b239f10114b7749a9
073d77b7b4c69b727973db088e0435ad061c08a0a4c8dc8aa8e011978e0b211e
ea40c8475c0ee72203e2ea2b3afcaf108528d9235257c7be2e1d17a18617a213
fc850a86f0d9d4b9f4f2e8b5b61a0a7867d85e51d32a13e95da4cbd695abcd0e
c7e684b4914048b73540d63023c96920dea69c9aba7860978867febb053fc1dd
18d243fe7cb1a5512498795cb2a698a34110c449ee11d28795626355f76ea773
aa37d98d95a243b400e94ee3e6340e675b9f474023433bcb1d0d8e91885374f6
4b84ef50c1ba33a25674a8ad5f5d55e2620ff07ecffad774922ab2c20534cf12
677cac31282f11fe3b1423d99b3359f25100472933b7bf98eed9c27762a220b2
52b46fe2eee35f977975f0ef5a968da36c63acb05c63a149c6e35e249340e786
fb5bb27458c70af23fea84442838ca3046135f74879e4f23fcedba05ed84c8cb
b1fcaf03b84df86b7d56c886866fd22d89a141332ce9695c7022202257933fd7
0a65f194ca3a8139f810ca0466bedaf0b03fc1a0c32093ed84db0aa389caf5ad
ac89d73515fa544ee6cb3cc58ea03c3e0b02c4592d05112bec9d6bf531ccfc77
b63c6fee35577a9f771f25a3641b30a3dd7f6526ad942cd8ba96d4e8258a206a
39274159837546b222ec966568329dff6583570f7792758b525a76b3a5f1ce5b
6e4476c15adbbff82d9052eaf777a3ee5a1d81efbe62c703f892fb849546ac0f
1db19fde2219a3308fa61c3e34465f5330dc589b1cd29add179423c7ac41390d
ace8d7e4eede0452d5dfa7dd1ac19d88c91ddea4cf18e2f811788a15d5736385
f1fe2357f47d44b84bc41508e9623db93832c4c7e348c9f10e08fca1ad0131c2
630ae00cc337fe7085cda6dbf422e827f095b35f6449bd71070f436498f1d099
6df2e448a7f3a53f49d46c6dac37e2abae49db35fff649aa22720a669b6f707e
95fd9a4c37a8fa0a460af3e610c113a453eaa66ec63e5fcb12700715041bb300
0b2e73b2c4f954d03968d410b3a31fa71c152e798515474c9f0e5814827ac81e
138355a0d4fa17460908dded486b63b6dcb0f432d264ae14092c60b96f3b4ad0
84f47aa18d0cb2fc349f2ea4944f03d819f6c25a1fc2c119bd2e31d60cc404b4
91049b508dbe085444faa1a99335961b29fd3709fce3b23d3a436e71d595d419

From the PIN diode (hex format):

2026-06-18T17:54:48.953939+00:00
59a3c1dbf40da8911414959a1727dda3f82ac3117769b11914d3a9833c736ff3
8af98fb222954daf31acfa760c16e17cb265672633ff000be494adac63134edb
0f79bd3288a21db51f299bf8d62703fb5ce4ab88a3b873f1680be3ada8cfc848
1b3660b574145c19ef8847af9f1869eea2f5ac2e018b08dc9ef73e93fb2d8092
0066457083308ace2542c6ef8152dd6a05159390ddbd0a0d9b8e44d4d01a6931
f1aecefe5cefd4e2371e615d0c3ea0b006f709b6e1ea28b3a5c0890ad4da6d97
9a311d852238330391fe47ecfe33c3b1e1e2613e1d2f730cc260cb725f4b9c30
ef79c0afb9098b43d18bda4cca5f9e45843b40186c715f18d89c65f0e35934e9
d4214c4112e916d65f6c6a344d2887e357a64419949b93000b45529189f9c3ba
3b6479ebd705bca6820488360bd3ded6ad9e45a1b21fdf94faaff9df4ddf5d2f
1e3d7a2e5c5397598d801f419c99c015900af628d7ba2b4270bf8dd600e3e959
ccf4cf29dc537d19f846a6c8a0a40bef2f6db80a350badf704df4fa42f50156e
a6ab56bd74b5676645095b6bd8471fbae128f9d0aa69d82f4e466f196f88784c
675d67dad6e2ceb3ad6ed03d0d7db57e8b90b3deda77bfaf9ab17ee717550c98
3d5a3da920b891c120cbb21e51e432a57cc7d8994169bfd5d912f51597524077
39bdcffad44139d938c23ad234b2b3bc5e68dbfcfe235caec8552309775b4627
b27f96e727acb36c5c140d14e669db417e2cf3c01c48af31e174d12b59ed1d20
462e2feb36d97b1dd92ace922d1c43264e1feff539617e4f185b7a757df26db9
24a2951ba10156775fe9710b30a095fc98f6c2990c1568860bb5fbba5e6dd429
37ff92e881531e33bfaa8c8c35344dcbbe939459f30d30600373c7f911a96397
7b6daba14e49b2716bee4805abf43478b5c9f893289256867132461ee9ec2a04
09e3bb0dbd3f3458afc71de21086e126a91d8f95a7c85c5b438dcd4507098277
21f2b8aefdca7fad17aced75f2dc2590e89a470f839442f51cec7c29d2e59a45
9ee8f8e934cb62f917884f41567047400a14201e2d31f0ffb85abbe0eb45a17b
ed43617a5948cd2c9f2477573894dede2f9d453eb362bb3eec82d0cc812f5856
92bc2a1fb1e8a3d316c1993f5d652438ecf8a7aef7dd6d860f3307ed5b563c94
d1798d5d30d2c778731b8b2be50b16ff4b5a1c3bde5aff6c0e21f5ddb00520ba
24c5628c4be703fcf4f62b234f6cb0e3837b873bb82dfa2a5f6307f2081e78b4
9e2734f18b305a15b26bed19395c00c45a442d738376a89e61b57d3a1dcf5b9b
365987f4312f82e721b02461a6773b6ff61aca1d39e250a52e0d810f7ef19821
b7414c722083317110854d2d5ca7b207279d878ac192a54cdc32d1022fa5a5fb
cce195d6e11660667a4264fe3a7696133d875563902bbf2feee229e0ed13eb02

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-06-18T18:01:31.753555+00:00
55586394071576825114369233712490183710446328817761
09309888220125271375240352960299238355569350568822
54738115350338920523006482074539051892944726087606
50314650171942091213055863801178534151125078069010
01317365026439717466278297594082176977193546995942
87072504765959355916177519736907611983809855142115
08420453730628086064386817514211333064719214340343
58751633403582879990462923613423621933103485818226
10200394814219936449711499328045647283536448350532
66565486209651360387056393246724776581365221927866
52636516967317354998998510671570554149626780007852
14039159716435675929134245368316753280938651628616
68739593859815261646427894055218032472494047175920
35555189810071415183915294199862327882801195512117
90504163089972769299617398943647643491781688991063
32684056487019951635587935860532777503847707258634
34114537616551440592123432348747631001485829571604
02907663936095324732106337737237532184786097426060
62110296894505174357074919826011538722591931376300
27486327013873484486503738320657396589311770783450
01045057013187151946173982901879659110681893909145
44821963902929909899034632497072152977593425634843
66286252709583488855285423483599726557137204826726
93573629642417203821159933358725688475962108986185
56509699721408617301499499101295551233663439497995
00738913071567005253097267656373080972557174735373
70341410025511122649547655681070101693196483661098
62951812072104277900114615789684570416796331672821
46213321717659148820302230193185602370090872079982
76500074200944968511597432226141127852594664487903

From the PIN diode (digits):

2026-06-18T17:54:48.953939+00:00
89639313684520204954233963429517190577252069316015
11384378344977754972181222247801033851001148737299
19781521895036622981314155390392713663841504117368
72275496811620922536717559240562724601390858624745
28460002691231483837669829820605214744891013554268
26054974925530979312626076060982407965923710095154
49293334565103457151957797622947151294961495755648
21927585093967397695586932596424081395245601895233
76651822950806527740358766682548554700116982453795
86590021058866300436541173586961783148757793473061
22469283518941283165565392214410408643661291410089
41832525706660641147098410531173047964478021106671
86891681030269099107713186407005477870112511362076
03930379731061132581263944791991755477262385125261
90616932844593327830815065249953650591182151826419
57896557569458527879889404359274853509199170397827
50397279089220132005652644922872754916438929327046
47542329424645286738783157972679249122172509853662
49276101861995131148604952945312210434118186940941
55462983305191704040535277904748891348960315991769
99512309716178737813077205715220814740468634135070
30420409871389635288759929163438692943496792916741
69070930193384742773237217374454711531486628244154
69585298233679658612716410203230454984908769612367
97228972445936198756484757696279988762302947888646
88423177632293536393013656677409341551079186604821
41934899201527394311227590285990081433760532863697
98407503433579087631233559844542959907083020805839
52394890217807255792009690684515311868589781255829
91555489354947303376369766195911262957806546132915

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