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):

2024-05-20T11:26:22.808362+00:00
9038a4f2e009f477f537c5ec1d9aaa85df0f7f3eeb4737703491b96ad5a01604
075ddbf8865b504d99dc8eef91ac50442a5cc692d26d8b23738d7e8eebf55221
4e405fb998a2674a5709fb0e564dc358ca2ca69cae541274bab222d28c8d8136
fa3271b89cbc468d1994f3d6fb50ed56cdfa8ff0070eef334b0ea3269f8f208c
8aa99fe5c600c9eeb796d9644ef1007c36afda1031bfd8d5305cf0143af16594
0078d2f7aa5126c04bf1e4b948b8049a4d5ad12040786bea9aece89374cfce30
13865f931ad421033fe1bc0aa6dc8af9fb9f45057ea80ebeb1a5c20f630c4013
771e293003e73347d6c0409e1169d500ee534414b4adbe9c68244fe3ea99c936
59cc19052d3153360ecf94513564392ade4301bc2ce829f29fa52a83f482f151
4c4e03cf6090a3bce66583ad48cd7a3ffceaa52d30e6ecd2fcf40e4a82e6fd74
f8d65b7e32a8d1567a9f9dfe8e6be4956e014561f89931ba5886ec8b3307967f
6a84175398c257a1d8601bcc7e0089486d4509d4ee1b17e452d4c08206fef528
9b45906382bdea7ac46c199ab0cbdb4bac35d7fd6ed2b1128eee939f21741b37
dd22ae8fa483fa9032872c7925eab54c9c23277a7c77240b3e458197bd5363a6
b9a862482f0c00b36ce657a706024af47e88319a6158ddde8222e95cdcaba32a
aaa5ec4f6f2cf68804d39729465cebb8b84642b18c7a9d5e4ff2ba3a6e8f2728
b140110bc3407d2b9e222c38bcea7d7b37123d7a36f34b82b10ecb4bdce41ccc
cf5c5a70f1a1413c708586b3b3bc74c9360ddb52d042c7ab6161307828deabf4
9a183ffd86cd62940b7c772aaa6091d1e57410bab1dd56aeeb77ca4097e0a2bb
615ba4fdd6135c9f6597215ed46716a138fc0fc86f7b4d945802c0b8159d9ea6
73859378f027353871d4c84151a2d92a736b595e17f2b9c689c47fd3c96e151f
235297999297f33a3bebef0adc33bfa7a6a1900ebdb0bf00fc2cc4cd411c1452
c1fec586db7c3732b50d105f8a416363dc42d337c59c859585216bac180e303d
447b2a014cd71f55d4b0820df64379d431bd67282ab7df8d50cc40cb094ff29c
7487a1eb8ecda1b6c0b9c8954ed036778eaa071d62c9657546e5c4bfc89243fe
813c39326f29d4a90c73a07bc0e230b122627307d2433fea646c7b2564977e25
57669a3563f31e7a00ba5a27c3146e5d6c7a1e6cb28391b7e7af16eac79e956c
0e85693c24f46d9b67f1a6f42a72183bc6549e5d71cfa5d5fde7813e66a2deea
0079ea6c0906081b1595ebf421aaeb5e83f85deafe98f4b2e5332c1e961cb8bb
38ddd81ee04d2bd08854447071d00cc3874681e531c3c9e2b3d23b1064d9d502
e392c429aefd98da4baf679558f7f0e6ce61f1cab4f12c3b4bddec63ab1c5e08
6ea4261b7e9e72925ec08946bb2a6fa18b0a1ad58f847182c9398e10563fcaa4

From the PIN diode (hex format):

2024-05-20T11:28:00.605144+00:00
2cf63be95afb79e4fcf212b7845f1da75e50ab66ad936cc434be8902db7c1dcd
3cd414074278a5e71fe006daa486c22e136c0f3464e7fbd605b729172d95bd8b
7a5d59255ccabce8108106a879be960b307a5d62178fb37442c0513dc3595359
8f67029e3eabe65ce5d6e577621923afe37fb8e394dcbeabadb216970cef7e6d
1d89da90f85fe7ee5624fc451d707f49158bcbf91ebf9c00013952832c7b8c8d
537c3578b20045f8e5a8ca007a7c5bc9975aef4783d47237be4ca3348c84182a
fd828621f1eaafbcb33108a64d6ef06270621ef7d80c1c11873515b780ad199e
bc47169e5265bf94426de696885eed34f6d5a1cde25243f5eadd05b952661c75
84c833133283ea9e793803fb7628f9409a050af8885c8eb85ead7ef005578902
30e4cff18ca79b931236dfdbedba35ac07f82d0c42007ed44afa037464eedf1c
34284fff4dbe8248e9a11ab3960b0e07199c59f11105781b4569041d98de6ad7
bdf603db58f9ccb06c9a8676313254aee25f687e89c324c600166c6577f75f76
123f6bbf0bbed30cecddf790242deb1cf5666fd7461cd9599d593d478eb04455
0bac25a686193417716df773eb203c83b27adbad492f4267bd772039f23b092d
11cc67865f0cf883b8741dc81e71175557336b23de4ad9ee93de5628ef4b6340
0eca1b33d9de79acbad87fdd21ca517972c556c77a50e7c5d7c2f7dacdcfbd0a
028f65c0408216f7e3bebb365fd94fcbed54613a5a869eef5ed4706a75a71223
1370d31b5620babc89b91deda3826ea4d9e95c1ba6f95deb3b02d3ab5708c119
5b4bba130ad7f6a1bb8d4f0798a0bce8b2b082618a56908cef941795837e6e5a
2748860946fbb1c789fe35fda9c1f8bc92c1c324d657a213a466ff8d19c57e6f
c1f67bd6982f804b52833aacf1555e51176224ec16c1ec8ee6828c55728bd2aa
a5e41d90f2da2e0d00559b0eb2f65ad78019a03d4509235720d467c04f6bd64f
1918d44454393c72df145af5a16f799492a0fb8ee393030d7413d6cff56da493
d9057b4c9747627d6caaef4bec598b8133ae3a7c81a47ff58820feb4397dc3bb
8e1a5d2b2658220fe485ba62be17e406b3e32a2c8ed34c4fca957fc16a8f71fe
9c32e5cf453aec536883076495a436a425197bdfed77e102c8933783a1650503
8174c4388b1287105e070dbb96efd7d3590e01a555517b36f99860cdf3351e74
eb55a3dccdec63428ab6c5930eff2971a34c8741d78877c694282187712b2c42
bfb03983429484df3212086d74b0f2de816353d62a35169d2a97d00415fc4bb8
dfd358c2bd2fe67c86c13fb5d7c979b6bb40b656d38ac1c72db213bb561ac1f7
8d526ecdda8b0ff1395880bed991e36b7c023ca278d04554e182aa290525c629
0611726488ad31b72840530b5f0d69ce56d0e5bd4d560f970c3fef55114d558e

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):

2024-05-20T11:26:22.808362+00:00
44566409195597295470331527627155125245850660220407
93349180775342457280684292984609393515412642823378
64958552620374870914867795884466567484181686783440
41295450138456887041254880864307145175146338594332
40386959980083500078002454751649914892205801480020
70813892758572840454779032642007544716481934954726
33036388106638596905266814907765941599126419193041
48035171926458170500836820807390560436795354892505
45498354144881530057426701884441596542313081767803
96446388013173722263654548147430169126506886225957
42074910016997534986883439510750270632238352948761
96272600377209690927238292300640556944993089229608
25547675725310771842475933162755347443643144503544
21378176563539222419361162692951898399668568987247
12007908876706027426364954978830349271634270657911
44360451417092848470667740225794798658104339407764
17119564254358344456882523551861225475307714752892
90126165601233347979881654138266997197974820407154
24633498481124194270964516168677867419645162879791
64199259015133940322615615112377488802928421575866
15334720395356136581624215078994238598379627102131
35825153465158591051916766614414897691004496652820
82939734245550811316953865999966559756334933330772
24144861682342017631857630136721498903404283418064
09795616356142618292854978541942700729980117709691
46672960575011416912156023924877349815076763000823
37005126378702545399302200869039952010930822300878
31458375229958490814330560360955036642142459988458
93136529620262002108090608272149337094319352785144
30502884875630774336846812131295357029499579591600

From the PIN diode (digits):

2024-05-20T11:28:00.605144+00:00
44599021188332952967948071027347089652903702242960
20076620653106643494461908155200058341234549893922
93893792881629066821905011482293982343791666928161
95898389430302586271921998253575278448907173782251
12260929374495863669291227732139309156000157823144
23404183245320780069680022249151907131145590766352
40322442303433758879490866771098129830122817355321
83287325588871225882019148660950369452618267058582
02281732511950315821560318406454051036924284947326
05873702484067554718548653720745126600267403160028
52407977903072612679501114072556891705202769050429
52068903887608543418495084749504263795369800220801
19951818630791119012443645280211702889578961714276
68851172376634255223130915326031782273734766038919
32575909451703349512318416293013238587510735744786
40759964142751217286273381211497869922809794891002
43019264302290875495798497589034589412061767183519
12278632868837852963301064922766935902718708932591
75861910618741790752608878763097388644404823493126
10903972340970779937536993884693953687621964024125
97261193235247287582315872859481239836229342304085
14397065294446130085551478902825606169093587320392
79077925246884576014209061112148466042470313161909
64470523765171982508707589392951745824296427363280
57259587422693433888341533869890230679424442767949
27930643135650695883043107004964546437252319024755
31610105032916965639183516940713875089140165858123
54529653301685639966388297471441136376356536199848
40333513434466917657316648325018080916762999834253
22574251042175848894894724349363812182876482863893

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







comments rss link

no comments posted yet


Alnwlsn 2024