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-05-03T13:08:59.209361+00:00
b74f5fe2b52070bb4c1a6678bf8a37d6cdec6af6b62a7e9b9aa4754de88be622
e942881634b84c959e9cd0d66b67c817ec9d2069c1254632e95d798c6fb9fdbe
46ae5c6ed8c37cf45e8c9b61fa22a933fa858133816d516fe9654010683d1ffa
49409f141ee4979aa1f5bee0f0a1d4f457b071e1059d3cf71d773bb1e9db19bf
482f464030e6cc060db8b3c4b9a5c1ff0d51b1587c3c9d5052bc6b7e5ad0d7e4
02a8e0165532daf2dda06be55242f29814463275738d3a5021ae1affad4bc74a
34ef0a6ce6798d853e7ef370c1f21efd4b94b1950d58aa593da297752eafb941
9f9d881dc0b49fcea9ac703ec81c54e99de41bb4296f5237cc8776519bbc93f8
cf1500eff0d5cf5b0577a703e3c065242b86ec7a870475a8dc773726229afb92
00b6a4de4958d6d6bdd665863cbd4214c207e2658d4f27c3e12d7111ea73bf17
36c07ab052fbc1f1f698db360288eb5052b15fccbe75a7b79c16508fd2721cf7
0d1fb1f911cf8a0c64a58ae7dc6de518ea2c16741fa9e8134d3e07f80e767835
155b0f0b718ff8d59c3e58aa3d3fd0ed4c740e7de78c559b6ae66af059484409
c8bdd7fddb3df9a534f64a906c1bebf9e95348b5c2f58c640ab70e1440067c70
5cf44261afdca8e388cdcbb97bd2cf81ea2d9e8e90511d799a05f84684cad0b2
ef3082931901fa3c01b81e4c0afd81c9ab7fecd6920ea454e9ef9048187d1b1e
64a91414cbd0b6cc369bfa15a17da9afcd17e327212bcd5c9720ee360a71da1f
79461f700a1895ccec76bf26568438fb1083f0e60324cae871f25cc3f7053409
ee5cc31b97301f902b79e7a42f11caf17fd96dd4b10c6829529441d111f9e101
5955e7f90afedfacb60e43351c88b1e7d36a07c045c8738af33d5d75b27f8b39
cb8080541b3e3766398f6046dda14d787609a55d5d3778599b00510e498290aa
b609fd9d0443ffaa6bc18809732756a01a2130bb41b340b0b1594767ece49a92
02ea2086cae7a023ead871afab9072e65dd976e73d8d4ce5a38aa4a2df8c2e90
155df1be2e3a97fa6040cd040f5c5c2f96c2cc3e6e8c758c338cf8d94088c134
0f0eadd97a693df9c6d0a13482e4300083497fdc81173441708a091b434bd89a
0475556fea6539420d0bb0da44520b043942e26f6dfd7651a177aafce6843700
7b4c1390435a7221c32c3b04e52a1c7d126c30af58bbf6537f1771260b2e325a
e398041c2985379e3928905fac31fb8cd62626c12a851a9d3cbde104ac6cabd1
3d0b9e4cfaab01a87b4206dd4018ed8c0fc5d488e2297dfb460ee91e470cc04b
be78b3c89c27afa01ca7825efeca8cd7b417ce3e035b2f3e49f3f995c2c644e3
7cdde8fa193f6abc1764406c8ccb2c3af60884f7c2e161a64250b8c211d592c8
8f2dfd367864d35181730eb56ed0ebaa4f0f18dc27aecebf6322b116976f44f0

From the PIN diode (hex format):

2026-05-03T12:56:00.406805+00:00
ee077ae64242deb8f31ac805fa4024282074ee567454c24c344bebe3d47e9cc3
e6b211c0b92be646978ed48fb579595a0fa65ca96e8c4d38a080dcef34e46f23
2424cd75457aab373610ccafcd2226d941f30811b7ccf0cd7922273a942222e2
40c93581bfe4c084e2220362ab4c2211b5e6b8456663e119452bffed6042deb0
4ed83dbdf94e4826c0f93f7bf247f1985a185fe3da31458a52bb39dd74fcd415
641457d8ce42be8cb8bc18150e4171605588d6c3c53a9deb5133caf64dbbe575
664ab83c9954ab1b2d57c74e37a9fc7e3b9c9661d34e37763e0c9081d7e57757
8e2affc9ef386f080e6696001a8dd64c9369b32e52193c07872524640bf7bc03
72188e233c6df735a1ab30d5185d31c2f8ad196c400185fc2485c0ba3300e8cf
bf6ced0dc964363fb81fff19caa1609a7587f51faab0050b8b0655c60f5458a0
52cc5b6cd7099d6786a563691ddca5b59ca7c7637a5ad0bbd27940a454ce3818
496de4aaaa675a22135a89a14596734aa1e693512d6838ef3b86c19a0264b6ad
33ab19db3f8e48399cfafecbfe777d647e470f69da8be9a9edc300139bf5e2fc
adcc7fd0278884437ac34bc10c2b9513ad74845436a14e53f14560225a296b02
b4654d9d6779f1daad948db477f334111d7439fe766b623a41a1b417cf892604
f169a4eacadb783a7016c370df48afb7bb5b722e6fad1b47da866bd50994ca58
0270dbedacf2cad6b16d1ed40022f8708419a02f6028baa1084b5ee9b40f9120
c8962d71cc6925eaa547f72de8195a3d1bf2e9a29b274c28daa7cca31f05f977
727fde10fccd9742f0c36be3d87258386ef859144efa855aa4bfb5005b54a119
02cc9b160c56b8df25d097c7195117c7928e4eee038d00a39d6d97c9115eb165
6dac711af6f5160d9c906b2413bf256d4404beff263c4f0ab8b016d033282dc2
731705c39fe9213a8a5b124fe11361c2ffe7ecd85f057cd5610dfe0c8577ac7f
5718739a74463cc7ee73efbab04cb7df3d1852e292ff32bcf009ad1a6fee133c
f4de61d12eb7b1d6f4325a141baad960afda2820e8bf04f75391f884a44f778e
aa4633d238f75e7ff7a3f59d46064ff894c5f2b84bcad2131f0ac0ecbd6890b8
610c9451f147a007cb374c19088a9221d84a37d149bd675a857745ed6a168e39
cd0ddbfa1e1bb3adb80dd3d7c9ccd98d9b32ae1bc7f62509d27c67c75ad70972
18eb65c8a45cfd7c3075c9897bc0936c2a9c339a303244c9a106505f512792d8
ad52b5121df2ad0ebc7176410db5f4a22d602e1551ae5a47233667c778280902
e5ca79f1ddb8c84a27c0c1faccf63c750d1563d63d9537b78b5062fa3aad25e3
0bba05a295c5e8884d2c74b253efb3a6d2d544bb6ceb00bf8a20a4c67475dbf9
6ea3b1220eccfe85fac7db83a4e56b9a8f34aa745e30935d8cfb2860ef355d4e

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-05-03T13:08:59.209361+00:00
83799581321287762602209138550682422655546417773934
66362252847649585607032357320593377050932140118590
70749210952494405597346951332951290981110164160461
31736459203051546190618776130557602919597725917247
70644806138479968565931381778824605780828807269002
68228550600782665220705017154158803374267375997452
10082141336226129330754877491388708961625117467585
65595736299280596972126228845727804111825535188155
88472100910519670392013643342235041768195538345446
00826473888901346089662094070141793995451317159123
54922276829352540236808277959017678356228043142813
31771738120065380924442216316919776207141820532191
15111343566288706163761614254085550606897268098961
65527444082783728194400010831420640624129266977568
36852329455842448129215405703278483047250160018430
76102971274614648444722425273000692020825455216125
69752339334392513254101331217031121024491891388632
56163103361392950552099295275148314443216447172709
77120441824865170189851072821467532836770607926915
38619317782739572828842762550257439670617720180965
93935520895500811473304470820957046770079336091539
86602633488765796476778971035446023234603513757144
14931861417663386462404644219390465851966404159292
47509462104017405140643693521514732205619861523048
00317327292352651238092767755404178511015766131176
68821104576611091881611970325500237619446790143395
44590442282518084875888783272313381146509052042841
33555857404495724940383893423326576089047208716111
58767101682366066424401597364125701430711292759020
79563975602867309440802362039147627349949868242563

From the PIN diode (digits):

2026-05-03T12:56:00.406805+00:00
07226666842605643640321686168494765275265695781792
85437051424381218990156692691040775660285211353636
17692271555416753438650817832134395848343464532991
92323403987176341781846902992569439666767861897872
38926323715290249549693882875716210020876690408488
24211465139685369597585781517787170274846053847127
45879978556926595650977855186212442919874242561108
14025000264176470579468225600735373600118803142442
35600953617148249349947325086401333633928651009108
13005463843125619654173531707605113906859815848860
82910809570334659905296581566799992290872164648456
24730970700390341990376169501574614781450456593493
54020082735171256342725756192500267115053969950019
55732739363267229575931243491973163284546178836996
34904107028001775703217348418019521729165718079858
65618023373804056420581222951272758387911446117327
71340709488802127277093000341232256047964086610875
94801545325045130537657145259061276255397640676331
05191427165166950714885610892078339064918100918461
25025522128684375199258123994642780341006357095117
94770109721326221356440736199137096804903860791084
76225140459415230595593358389118791997949505249713
12331972278724155416706099158676768361248246508809
73261119609746837750902027709675403291048345326479
19427070515694276357700679489784751931109289044484
97124881716007557625083846337455738903903319690622
42571330277973841341555074279937092403999009142401
64922448173723924708425651544850686106809581394673
82811829731488131865138162459646218174907135540399
20400902218474399293601713219961495583398098587337

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