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-08-08T19:37:27.038529+00:00
ca23c7c94711568aad31f81ee3269e0548b08de8ff1179313e31f948386192e5
59dc215de5ed3af8b39940dd0309ff58d17b5659e32e58461930120169792f4a
d5483a53f4048f89791cc3f7ae33d3a797e80560fc4950693620d3cd2218be0c
6b262dd870bf3acb0616cfb0d68889c8643d6027383161876e1ece7f27e45fb0
7ca3e4afd4f7aebe26a048379aa7d0b162ba6529317887c8b5813052e5fcefcf
dfba364724b745e5704cfc51df8ff7350c6094a339fd09af937a5ca5a9551c46
a0a6f97f762d14c382fcbddfc4c131b39b039b8112e7e444f82ece4fc648c9ad
808dde527436abe188fb972a8ea7d9b7b91e39c8f1b628e520c6018ba49bfcc2
bd01c84130dd41127aff214b96e0ff08bb11169286e72afcf9e58c22cb0f99bc
3c4923d332c9ff8862cc3f63bd6da8ac4bf2f352d75cc2b9e013390cdbf5f8d5
bade27ee9befce986760bd7572c489d41907a4d28f50e28d8851a07eb843da9b
68e7945e837bcf4c0916f010e55860b47e5a76e72ec26aa68b1336b5bbc0650e
7da0ac52b5b9ac8d94a0d1b601c4d99b8b40536af1b6777fe2e1ecc681dc7aef
a39645f211a7d285985fba3d3f4b3c41398632d2b3c5b98bdfdde815e4bdd7e7
432843fb79701d245474f9ef88392482ec104c5983726151730a25fb9b0d1df4
b89b36452b6da14b01c0608243df097b7598351a69ab7a263adbb274861f0dc9
09b3c6296bdcd2ae135d848800651a02e37ad1edc21a863c2670dba24c57f53a
5f6b83e15c01487104f4e29a4a24c53da0275b8850c6ae831994122d610b093e
6a37de06712548d40fa8b6892b0f979d9d0179837811255dea557da028963867
0ad54d1e3974cf1aa760cdaee7db674ce7699f76cc5fd1abfd5fdac5d9b3e6dc
53574b0905e71f34ef7e2ccc7e800599900e36e5d6b0195ebe3047fe50b6becc
920440ef5bd6b00000319bb77e30dca5f8b3d6242695cfc13d54dbbedb129adf
759f17a7bf938161e937ad70b454f1ae2bf670a940ee2c9b06ceacfa10bf4c57
28a74e0e7b6e53ae3419694160605bad9921e96d3a53a59a47b713611611205c
6f8e5e706512905267e53c59bfc09d8400b86ca65a4916d4029062c1a428d0e0
df1f04a875fc91f39a72184ccf33f5c003b15b5e78cee633c80a219a28267d46
d4fad313655646c698118fbfb6310b105674bf864b3152652865518599eb60d7
56c99cb9323b2a6789ea0bf69df398690b707fd30922fb46a475fe2548490039
ec4b466248158b9239ddb0ad48bcfdd8841460a007cc9fe3971e55b5bfe5aa9c
b6d1f0aca62ca209ee0ab46dd25d6ccf97ccb873a8c1758b902cd41b706d9c86
4d219587496cf716be9cf55b6cd313b9ed45ea3cbf4a01efc7c97b0289b5e942
15765f75f16a4e5dae282e42c8e2da484582a25301ca81931bc0a16cdf951154

From the PIN diode (hex format):

2025-08-08T19:37:14.038591+00:00
75b26bdf08b4c35caad451f9d02a693ee0d2d40329a173bb54d8c882b23eeff7
3e9bc15f862fe65e5f616ad1d31ff9e7fadeb07d3645a4132711a0003b09d0a0
1ebee8799bf1aaa0fef76f684ee77328c59dcd395d8290cedb0717becf6b77f1
43e7506969ffc016f1e5e0abb7c148193111f531c466cc2c901af115f28bc31c
29285355ae05a66b91015bce224e7a3d2d3982a7c026cca5ad55a80d2da37d15
c5be1d2ddb29464c240e30cb04efe3d4b37c3ce0c7b28a01b96f2be3cfde9d2f
ca5ca5fb74f3955e42d95f4b5b470cf6f55becce2e82753a667ae3c27b5b35d9
a709c006a7afab38660fffb1c674c7fbc276111f6260519c08a2aeeba092183d
6625f2fa4387ef388d0304343e5618d8b306de27a295c74f77c723144223d3d1
ddeb26e13004c33d0ab44211b4f34e7855984bc448fc117c2b76a0a198dd4b4e
1efc9050e7d06b6519c4200fea77602f24bd61528f2ea1284f2f9bb814544ebd
58b6aa4c0772b18dd618f3b155776b53690e5f328dcc205b9b8946d6ba3ee0ef
8e82247816d1579a1a014c54b9b8fdcfed0af38f2530891a6250907722864dc3
26b304f051fff4532ef37e73d0181b8ed2753a1069a821efa0668c9ec6c8eb49
b3d905e2c6cf497eb83ad7726fb9e9ae06f4bc7aa4ce0fb510a21cab2442d7cf
94d2453ba47e3d4d472f2db2a946409439e38e97a85802425dea4e2dfe647926
bc41adc9ed0ce6518170591fa860ec63a2ed5c5827e74ade9e853b140e985755
79c01d9e00abed003ceff902b773b8d6af263bc9124c0956f84b0edf1afdb1fb
32172439f1983af73021f9350a06c2d8da88e4e0f5f178a7eb25aa8a5ebaa963
c687130dfa70b5159c97b9a78894031806cd9cdf01d1a59c2dcda9bb800370ee
aad87b29979db715d0886046ae2e65a1384c488d4e209abef45fa36d71838ecb
aa28969c1aa6664f0973983045c50d0b49303f8f5f1d4eef27deb4acc316d7f8
db531c034cef036653d32043ecc443ee5707d233f157319f42d1c93568c227b8
ad8e4fdc94c72d7ce11e94d8a3bc4c8595960ccc4af74018ca87d38694ece3db
a0a8f9ac609c233a4f765e78a4cf0ded56fe1fc4b60ae4836f75092b9314f67d
202ac96f55454945eb635608aaacd9312501483b917e7cfcf00cf32136a2f96e
a4728926e827bb6f5413e758994fc38d565589255a54df4a47ff800b6f4b55ff
5cd7520ad5347e4195c91fbd4d6752ed2e855fc8b25c46829eebf998e91ab22a
86331d66d05380171ca8eba1aa4b74a733072eda552002f1eccf522bb49bf955
ce40f2bd908f7cb00ae47918e62b58786c0a1fb0acea0d2436d1f3e204987da4
00bde20cfad620b5438839026e8bd57c99a57ca147471a4cb0c9f77c940b2b25
fb4c00c895eb255201939af2a42030cbde3371162618ce3df5e64a25d22fc6e7

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-08-08T19:37:27.038529+00:00
35997117863873493038580572764117214962497256974689
33935879536403098823868946887025481801052147747258
83044337212895745167510596738005543234249012073845
12915806227636370061963956499735103027399576246375
74903860725554677798860141492035812948828654713683
69127681435312964863570975472292656985287060662718
45209530899693497955035529186846799872732841821654
71365142426783853057824032980139645594890165486518
22337550088717224634424034155388607335503698639989
09687275829294851957128639555203968917149637250764
43804136816026846755044894312376092216889680269018
46940666391954818792011425607282818572414860820196
55396483068219279829226350691767335295866163756065
57345079978539218967406721122936841636573630167689
31149781151037551329845554694309617501929630670923
17525326057122385878163431130979984107741993323600
01260222942634603812627687589507319201721304547436
97616039913680987431254818459711096206550613377215
68823743155157570121312017379385256040505603107730
57162667967403760559189571959779838775090531522644
26280553441454762594904871808290460464917600004955
83264865793638499361849018541759236791472997557312
80847443126964445506721691768740677814231083745225
05659696917353330958836554718319972217329211429412
01184482036089919257320084086690732202449893644031
04681745541424765192037791942051103354403825701901
86709852174391824911168616913475498201400181335396
86568550594203371157520511122709347064173772730057
75709872213946577673728832209660075951308581917056
82726644620910800993085184156893173944442712095634

From the PIN diode (digits):

2025-08-08T19:37:14.038591+00:00
17780708809592708142056203416115878430786262559395
34479495970631762554696419391760005909603090215570
60110478154097575793304407239007196780050592227183
93722549174996024444262139952841408385740566074501
91347822614557306792386573856813456325219790294541
70763614480479246099783801851143574792651649946695
75917112914630175802229423915367099206677571560215
77981699941817319896815608627460462461023767355641
03045262862479063962499979199935206635384804956110
80661780782085527596721724431860615275783044800701
25963215199647368997824346614079475584208478898882
70760714774124778519078305149550413291553770866242
30362022875426017684858410433748372698804419343477
95387904818346261524274217581605683360024058987379
05987326845814118574068822641581166228713666486959
64266177714745786970644857425168880266937845002138
88657312812912893168969962928839745833592014528785
21922958007100600283158475385918760986751426775023
36575258483353100694362067377038948669999835191312
81215651856736480324065601655645698728031270234151
57832136967074460161567672417832549095630913314270
40505626660279091552486997131173486343952978398072
95228328037603028332679667870751874959665304943984
73427948994524304863887633495012746424353448606872
96563558791894206413863196821031111709434720253242
11856973699986087072493701725945262412335462106414
37383987118419885379954186853737908474712811117585
92821052266549318977038246339578927030585226784234
51290283282328686170751667510746853202824380558564
89444324761021244388200810317672133654045225640089

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 | support | Alnwlsn 2025