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-06-27T13:18:20.071604+00:00
9049e99a42a212dddc35d507d4215aa1b38174aed58604457cc218ec13640660
e4e40321e3520907de9b691513fa0b19c061e97fd3ac5ea41d799764080a1752
5d09c452d6d160e6b5bb51b9465304f82d274925ad23bda6bd093dd7cf10590f
a9c24bd70bfee8e4a5f034daefd2c2778456fb5f39cec5416983436af6f23d54
f1ba3e64f435b3956b1bd372b14726c28c410373e06129078ded293f7315e0ab
7db29e3d276a69a8d47fa15aebf5af312baad69432c7d62a8edf75bc457ea9a0
4c0651b715ed07b3bed252cbfd465693bffee6fad5396b865e55b2043bb2ded3
bb124ef9a23869bb79ed879ae9606ecf08717c29fa1e819b88fec30ce68a2801
a4282e1a77ef73d4be987b35f074377b41da44dbe960d30262dc361272844ba8
57004f764276e75e8b6ea625a5dbe1e05b604449ee0042a8fc4c60db746c5884
34ece2faa595f5431e0dae81f8e7173b5df90060c345d4ce768d11bde9150a8b
ae7b860347982094d381000badeb199e68413b706c8bd18f2254a9f0ff5e3f59
0177c72c38dd456480533d0cbd3215b3d8aaadf277c1184004c4172ef30c8d8d
6e05e8013dfe31fb5dbcd0b5eebe2c6eea77680471efd8ffe4239acce73622e6
7df623190997d14cb5055a59bbb3f6ec8b3334b83be186142819f271f476b4dc
fb360327940c686591036c0593408a554b9b4e5401bb3c9f412feb7db6921089
468b3e70fa01bb9903ee63fdcd12c1abaddfe6eb0e82144d66aa0501daf1ed69
5b19d6543b976a80b5dead161c73c27eaabbf75077a7348133c0abb673fa52c9
6a7824d91d3d02c54b7753d9e74b4bb3e453ea39c627365ef29d23d163ed3d57
5fb27b337cb2f1575484b542ac606e9a03da6655c3996555ad6fb4b50a87172b
b3f7bd7c5c4fe4490567cce2b1210704ef5bb0c41913e910b40961d53c45ae73
1549e3d0a21a3bbf7eca33a640e6551690d70d2cedd2b41fff80a54794df17f6
69a834b91df58ecc45bedaeae94c93b854778f6e27966d1aeb6c550ada2b41b5
0e0d7f417169107cc2059218df3359270a1452e9bb3ec16821b3fd0199a40229
6a4d37c79a3a26c2bf9d23b54d84cc79ef6aba027a0cea12f1b860de9fcb8d07
b17f7e848b741526c0008d9745e49accd08e522c9e84670b615fd5ec8b1f9172
d0a7805b78debeeb1c0bfc34d377dfbaf974f8fe14e4703bc6659b408f7dcad8
7d44793e2f77a8f5aaa100ae635f7e2b90c7a312a08dc44a8f3d042bc7447f04
32c86f0002ee497e99d10fab871efb68a2fb2fe5ca426d073b6a7643ffb865d7
31a5a13d24600db7b51ddd2383c22844ac4d6b7257cb6e420aad2cb7196b4d21
c297e587260e8fa61c80c8a4895a52332ca5b0b326220b8f718bbb40cad5ea06
5ab5147b9ecd52240e41db7fb31d848e9ed6213eb91c077792a6b07d2e902db4

From the PIN diode (hex format):

2025-06-27T13:17:36.871537+00:00
e6e0094fd4f462f169ae51634e2de16202610ed7f11960d4ba777b224eb85c56
f877814db6a001076e21ce0d1f2e92940fd5b8fad3868816484d3e77d8163c08
fc6bcc1c268c09feb114a73d3c27ffc40cb3965be77e8fd6e8195e9bd894c7bf
076d373296853f269cfd330faac5ed021a15b9116b828cfacef1db20382b695f
88da3fe7855ff90b68519b95b973d5b269331534403bfbd5b3ab10cac29adcc2
702ccbb608b10a0e80818e1e099d89714198fdd746af231c4a09cb0fdd050525
afaec5770f540eea7ccce7daaefab26a9ff703aab02f17e545ee055fadc639f2
6d339d18c840512d170d703701955149acc04f0061898fb938b1d53710aaa349
0660eeee64cf31a9b8a59318fca527cbf664f37f0bd52188f4dc1116ed371a46
a6124a8e2e744d177223ddcf2e44f728455b537b794f47672cab88d9e26183e2
78436de5bf00c551e9049222a35db62200c0accd1e63648d57c5298c9252fa8e
8ef1c15d25bdba8892cfae086a8389189772d0bbc1d6135efe1bd883da6f8fef
f4fe8f2cb83509e3fab89fa07354029ed5c9e45a053604f8fd8850df08ca675a
100f53112e0f15d649516d58603ae7894be73f77c001ff166cc4a2eeef4aef50
306eddcf066cf5d724bce75907a8c5792c9d5f140b0f6cec63dce4c481980ccd
fcbbeec809a48d3a255508b306e3fc3cb987c34fe2b11476feead0e13ecb28fa
940f0e34ada63164766220e477290b88004d762060ca32d6c89ad6a9806144ee
1c381bf8c1eff5d2c682ede6b1392f7ffd9b4eb9168610ff1b161e1252e1194f
aabb54bffbf6e365f5911fee27430a9357dcee06f90f1b87857fc48b78169207
8359c55739bb0af5595748fe315fce6b3ea4a630c0bae7912eb23439e63a3e5f
7e6e609497f0ce45aa7f3c95a50627d60a13218b53c88045e20f5e4af981a5d2
891ac622fda57c779a34807edf574e1190e2c607ca11b9e25ab4e3958e9abac6
83560036eefdf423312aae3049174f443aa0f4994125d236102e7811570995be
ae3d598e348f58a3355004b135a4818ee449c44de7db807a35ebb9909de9f317
150758375a5fda15b1b49ed4b6a4353e53acc14cb9d63bd3ad9de7c0f03dc545
49ab8d010983afa75b1faf59c74e6856f76422ecda4ed984022c239419ae90fc
26e13d95e817b87cb36d8b80ee8bb897a71a331747da35bcf56019314328d5d1
46253f7a08e6b43862de6b8b0ab669a22ea5e3070869f8bdf13f0c90b0ef39d3
7d7ce48b28146af044ccde525191a2a484a03667cd3a2378f2926dd7c88788eb
56e5fa4070add7b90f81c04248e6e7c366b970b99665336945ac089b360baac4
9d37a12387a01396d86a24e6656607e69c1aa682045f0969391a06a562ed5f90
02c2942def04e551c87364e5596f87e4b520219281611f2a05c98cef9ef9789e

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-06-27T13:18:20.071604+00:00
44735466621853073390617929167434046924942419000696
03338209075505211911259297277294642921510008102382
93099682968187818570830445397337733589668909611689
15699475116552941932869557976505316706618486620053
79490727147771389440650315974107414163152171257858
61390605682761907549437048509942421788692669607606
81832107799082708647915707349485780459788718786256
05872135549610081324413029553695123840016440462619
15905223531655236568960298541814327568870079186618
94391066376591966873006668769616088832526549673013
74292359930096956918411789211039742334037152324829
00117325580465591208394334846994638901199944566900
28836112895021797073199324640496234612414110050161
49938881904410190404133554543425352509517681059089
87793951528459342040251318805403394812040145030805
47643885755578840187605965472582461637703962120187
53039918937173143020770270050105912584595106288173
22281594267087801967522951927182158206203629610297
75198375757983579839549457359961879578235124788784
32816672961054030285955301857311808110352343798924
92797305037733070491769625191680099760697415217362
26599126516664852244134480312865714823056852852942
69907647848419431039500926088510436581141327651305
16249405462451893910208287629304337901536402410677
55995458389491573581773221068602221218849659410777
27263239162138920041516954428244583203119795393145
14672891209028115219861620125998015564432525682162
47196870610074999526434499631860419674436104439968
27045011000273265315713530046247660907590618678401
49656161369613838129353194406872770714871066107344

From the PIN diode (digits):

2025-06-27T13:17:36.871537+00:00
09799805748199784598029714259686192334788492861929
77826001071033133146464815843436227277621922600807
28384009772067616039961279509126432594554899910709
55505033633856511570970226218517073040325643059536
63339511048155498515780551215264597971169454941244
82087710142829423009573713655270753528740915050537
75749719158414247478065903707647236905957398570951
57246481452313125501498173729279009737438556775516
70637306960049698465472465390027113336172255267066
18744246167723143546684069918323217971034471369731
20670991009781044634639382340092723099004187974140
46824242939337898636467408063137245114879319942731
11434344845309845960158402589005540436800803901615
83174615217381098896583775631992012208966274804810
06083688890768972144579520111508999629521287096441
58378508790660853595797720186240481514527366490018
98321941113600771832965054692897682856279398307757
47275578852234162722301882257970878491014531396710
47870615273533279639202246073189978757871089877249
95076264664892864546785257586295261096485169702760
49650639101933398328691594742965372698346524195452
28268778174498071785908049425486983186005435494274
48732379685860536537541646201787094990746189425243
88635380047753642942739677282253854457232107885590
95217780588264536283729376855973579261976973714101
09317567913175899978048600347832024435482574443861
49238424790939283984516726512371538896254967407037
63220880569807391082056246650708058963124476572524
39402006688281456264326054035835204609353686641273
85152992667295028512855001510569720855541170965755

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