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-16T16:58:43.897655+00:00
02434ea5f2ca9faba946282641e9b05eb3cd7a374e7abfb69c8527b3bce9800d
3d4444ccaf98cb9d70cd0408de46d1aa2b8bbd0621911dae7eb15acf1eaa7dde
9ae5eda99091d488415323ed5ecf924c7e8317479ea60446243b17857ba606af
390c6d29051a893d4031ef6ee221c1a1c011784517a1ce3d4a74ba3f9d46a30d
4df05582dba67db47a78236c2f5067a73a9ca25bd2e654910e7cbf4c4ba2a6aa
7531bfebeced21c3a9c3a912e304596d6b941a27cfabd71eb84b1d16e2940541
9d105070f9ba2c8f071d27752a26126dad5785ad33e44244d1d48d58ccbe8039
641f77540947ed414bbd5167d55d18764a660edd942ef246da0b50616cfa2f7a
4892566eaf9261f78063332cf889caa97beb1a0c9bf14e37fa14ed5d4e1ad7ff
6873c8c129226d0cdb0eb15439ea2c1c6b9df3c917277b7cc65d18786a688236
e50bf735fe8eef0480f2936cacbef71b7249ca7765989dc22caddcd61182e73e
1ba09c1304bee7d2c92cf91b27d2843084672f83ee2c18c91a8514543e4b33b5
15c56971131733dc5bf40edf5451495544fb82897e8729be688edcc76f7632e2
87982b217449fa60aa653dadb67e7bffc1a26896796b6a06b4e3ad1b93d47e4c
d9b70cdaa71596505e2ce6b73b6a7c4cdbb7ede6e2d46c4a2a03aea85e4f77d4
fc6a3c03b2f12daa7e4a2b0011ec67ab8f99e821ba040bb30677e3ca4a4ab124
8fa5efebac1c13c12460e986a46b89be50254e797156fb1fddc8d699e47ba11b
7e34e99996d2cce436807d5292921cb40bca5991ddd23b7b88795271af290a32
f097775c954f5cba867619f2e9f92436814d22324e5320f13e731d1ee0862e4a
13dbc30758affc5c76b2f92d9b3a9a2246f65909c04d3e1d34c14307a75b0a03
297975415efc0a4f03c06a4f3d777e8439b25ba3d205a14b112bc397562ba451
c4175bc69b6a1d32e98c31063ad2829f0d99ec506c855e6d38fd709d4182ca5b
c2663243860fc120a9c86b2eb6ea56d492b3a2906487a26d1fdaec77112803fe
69d017a03348c199cfb57f133c377ba7101a9c48df7b10fbdb8403b9854d477b
320898eed2102367d11b0cbb9b6c30d43e50d2679bd4c60d0637e00b8c515033
a9723d67413175d45165d1f389f1abc5b07ba562c90ccf187bbd436881274376
8f6ce27be0db7d863d1f2104f9a4b01403da41a9cd22841414cab23daea8fdd1
c5cfe03578bc325c729f3dee0a92299f5c6811198eeec14989f2e5895ae1bbc2
301397ebc192f0a5a3773dd675b8966fa537a17aafb73db4263b98166201bf3c
d4c13e70b1d955a1997015c44874e8cd9f748dfe5b21bc514f4109f736d353b5
9d242546c1ffbd714493ce9ffef0f2f3ffe8119ae97cced4ae9e9d83e3b77235
1483f55ffa1f279270e7a492eb9c3f9f27147a5fc4a1bb15e1df7dcea2156352

From the PIN diode (hex format):

2026-09-16T16:58:33.297873+00:00
2da1bb5bf59759a3c958e5db4c1eba87bcad6eae239a7f11a82f4f089d1d7804
006a7b5ea7727685311a195e55175e896a914805911169a8d849ffe363be73b9
8a992fbcfd686735b99bb8594c7039385bd48c303dd79c0c117ea973c648aacd
15d2b15d0bcf0de41828712672d996c977ab8a8c981529c0d9860bc1078a87a0
12969130af4a716329c6ab84f62a2d2883828d1a407f561dc62846a8006307c4
cf4174c27f0ce5336fbcbd8f542b7217e3fb05de09fa57ca47e0ec698c2fc7ef
30e5ff31bb0a4737051b49e89294cb5a2256d7184526dfd82b93bbd22d54910e
e6b60dea08598a7bfd3bbd8e868e9ab12a96b3f14f5b15cec8d02c12204454b9
91b4e36eab5278174592adc25069822973e70bb3250efce693d0f6647a3c8464
1cc94b6c25bc327691c4102a03f07260e131af1dfbc64a1199f27ac30f0cec4d
f35a395f0fac1c0cc6dc0a8728d2254824db8045f1e182f10970cba3827ceb0c
97bb6813739997c8f2950f7fbe638763f5119162851ade7d1f6a572ad3fd6a47
25c4091cd7d3f7c07f14db1a295bfec138afa98b0638b31e0586a3020a233cdd
b41266c47c785091063209ae8bc1ecd8feda1c851a3b731cbdb01369c28bea8f
622a0f239a8bf601726ebf650290379674d0004003e42cb46e522138d97a3946
1480a99fd4d224bda44ae28172159621a24dbafa082f0e87f96ca530986ee012
0f5e04a0c28d17a388fba040e6f2400733beba1b0bfe0153845a4fad93e1db47
27edacf6d9e4ce8fe0b27990e49b45449d3e3bede1f82d2ad8f18009de80975b
ddb38dc0d6439f8d2539f36f55045e1a46f001a8331c7fccc65ca17d61dbd599
a2d763153c92131b4275209c9c38ab2570677696b5c134c5e0993ef62db2eb6e
7740315ce703282ef7f944d7c425ed4ae93e9e8d7d6e74d1c0b951d7dac0a4ad
894c0597718378ebe7e0ffe8d3ca4311a287312faf2562e5076e3026fb12d671
0380b156937c95b1794aca774cd4fa83f8c73a76331bd47bfc8df5e8a9b790dd
4e51df0474f78a3fbd78c640842c52f005ffdc149b58061a3a43153e479b91ae
683d44fa8b797ad52b614f8fe7a278f9c4c3c18512c5b9c2502bddfccc76a567
eb16da1c8708ebe2bd8f6778fc627874c128bc71054c61dc7c8348e6f2f0b82e
8fed9772ef1d74f5dcf39ae0ef9cdbb274ed6f5c0f4b50ab0e220c530a2321c2
36cfe137641dd9359bb920a02f53674f4d8ae92260bed12883faae3fb16de2ad
3b0b75d8110fb44c8689ba64a6cd0de6d5527eca57976d5b9f701c055983585b
7ae0aaecf2ab504ee65424f8d60c44b04ab68dc6b0bd01bffa3ed1e024554ec0
5c3fd650e1223de931878c809af6325f1170f75c3715d4f1cf8b1ea63e22a25a
3725655e5041ea3ff6c74d742879dddd8efc820656d01a7f0df81a89e2d18c3e

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-16T16:58:43.897655+00:00
02677865597169704038657694792255782291825633397988
28136168687552571204087070433989063345297426779030
70255469444536658335944676263123715866047036592333
23660675571209410526376164491033936192172069236161
74168663577063137785306625802220350847800367585662
91844514249176756266701749913395699569180489090748
26397130847529224805655716801286444307293917423818
09738733735166684188902857003119840971657589810393
24187402144846701180970847227246861075469728995144
37692326125578552093782604159341340912147784574428
07572339232498932420060430541153420428470872902714
73190152579444731730622760561904904427393248320347
31442426332084627551812197051319235191148481738568
30372635419004429911185035524333167396700161738226
23936204502107060680732747267683126721508094448359
06247683087442037468947919066003784570267443001703
71435333860411790619747477364365722819933696346407
37908037782113863153236127265253505428258246462880
11894559233621821375411050511992497992863418253654
29773450788332621529303446741995078875921878455558
54347089099277622952936707679110034121176594107903
92067961192632577891630561751743955186436481962391
98550629504049065830591353800833940956125765309194
02506734159332690746828646796244003562093119174003
05236051729353812719605523671626567223163203853377
71235008521635032712875508486280035598130655114081
80516914610365491781013771977623659812242389670429
39671843082325346131330464762003656934322020786174
68975320885092145961104641599204172542937337379087
94481951934665631961178450116555612275836180385952

From the PIN diode (digits):

2026-09-16T16:58:33.297873+00:00
45618791518963887630863588731074355427176847790857
29200400062394671418334926259485239437064572054517
05687399901585385347880403538555848976125756914048
61561217266915987270217793111324401338145019713840
52214192341193073835601850454875741399419871324245
40313041266427862998407068009907966516942712511188
89438443142305098771054047994849871071550527734648
90348624693843478745844514821308893823598942344254
77425079799121441832688485458010718220236946739480
05304115117937144700226032002875083788501845961642
03149649752998741753229515127790579515722812981035
40377236286930091263302412518704191553514915279099
35991745983326253106874206713796092892272026419193
56756939065679300534630210356080180296242080450650
09743993283326591528897619059439439842153554390114
10910102445550160064034480108233562257702028695936
89647429142150336277860847143508654852101815940460
94412363366064640751908627110183329079734771397243
78214455696857625945422809285191794192675941375711
85049426700168512827989261259753629921604619276617
32565656713712031850819352975362457810196449920340
46689637746258412510169285819264733776055113312067
17623549477537980710483818130328778647244977217419
76319958185127234169834478810416386389209864324482
05205588062658672162715545740461683921224397794362
20969593331897859480431865032228350889430320982016
93408813057697243172844643511429165456781611921575
80711434128310353394545500295355853260478303797738
34969040317463770973591117171580763437860066138226
87510991591228058931889122707180788436126876748241

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