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-27T18:52:41.154556+00:00
e1242d57257c486f3118d48d95d86219dba1a23034fc2d9e6f1b9f2fbbacf996
7da19ab2703a48ed3654bf5fdb9cd2d778c462025013e33dd1ee496a248bbf38
71dc18c83b2199b346e29d97784513624f02a78d61d7b1de0fcc20f74b580f7f
1c36b145364dfc48f80c0ad8d1b5f610e4e518275fa37afebd2c3ba29d91efa2
ce8961bc17b0a899eb37fcda802de6a5ffca59cf854a9c2f0c069c94a105204e
ac4dae421dbdaa793001421e57fe0ed6255eba4a1006063743fde92e4032acea
1b49b11905f92e5d5ca57f2756b1ba6581284e81a596bce198c6f458a7c31121
a9480b537c98527d7908cbb4f7b1ef334a82fb5861899590ee4ce9e2d6fbc8c4
5456d7291e1cf58bbec9d7e4abed41583061216f7606066ed5cd07260ccb471a
85ece94dc6d5882c0b46f73446669d77260725e18c2bdeac9999adedb1cd54b0
d5b944153c4971022a8e1f5e4091dfc174ae43722eafc0a2a6bd1efb0cf2ca50
1e6576374403a815bbd9ba5163e4c124d71f4f5aca7d57bcb8648f63d85446f9
d4a83db9907576ec50c5fa36304eff4b6b62f3f28c2db3932006fd97d495e02c
9c1f4966727b7cd795032c3cc5201d64d91ef89b0027de5987dc8d9b47f5d6ee
be29b12148a11832aaa2068459e58bba14ce69e64c888bed61e0d240ff048704
48fbdba41c077b3ccbbe827a102cbbeddb2e353e8c03cf13f4d6d630d989f66a
84724cd03d2285836b61197c2004b500154316c0603c514e8cd5d423ee3f66de
dcfb23830ddf69938eda90f419dea98c21c69cf17bdb062fa9fa08cb124c52a5
e0967072bb562bbb5a67c4b90e2885268e5b894ff78d5e45810ee109fba2df22
d0ab300e13ffdbb423db8d817eaa5d2a956485fcb1dd240475ab8edffa642a52
a3eb19b32547f1a291f74ec01d1b2bb81dc3a6971f138b032ebae707cb4edc51
3ae6dc34e0981be46c34570df736d78c8f72b3d8e4fea26e87b40a5f907dede1
978a50e5a7faa0b22b00b2e64a4287735c9b1fd6df065ee895522c1f0319aa93
dc4032d9747bd1e6f128f74b7eb12278da61bc80123e10c2b04020713323da0c
13be243b5cdfdb4d954624e8dd4221954bacb1838ce34ad98d9b59f62807b8c7
46cccd29e0988279c598bde209000fb4edb99b4e651861231450832ab7392438
07a4922ea098dd3e1704e95f038185dfb209899b79b3095bb463a3172cc1e6de
c95f4301b70636696499051c9a26368a0741af9244443c5dbff8df741dd52ed9
c2a4f0cd21a9cf0eae0b8d15683a8b0a22013ca2f738ca2c3fd2786f7ff332b0
b56c404e45bc6f86c1d8a33f58a1a315bdf0122f88786d799709fcbac39350b0
37d1aeea5e5cf5605eb2683e0509b3778627144b704135ba2c89a3c5c73e7eaa
6f15d295e08cc2b75a302db3037b7769403c56a272fff2f76a9b954282e51911

From the PIN diode (hex format):

2026-05-27T18:46:17.152123+00:00
471810ecf6f0469009920c7200c28ff2d37883b26033a220a1865677f44f0f28
19d08ed7650c07d4d53401d7406108a25d057b20e2ac7093d0bcdad07dbe36c7
6a2696c6494735ff2137aee922c84941e6a1756c7ec825f12948e956e08c9e8c
fd0d4937a4b2fe3d37f507e05d34b36d6c303b6338ca63afe3e6c79c93340e0c
f589dd95ec8f9d70dd1b2e81e8193365126c0dbf15ec65c062e7db340db369c2
a1453b0dcc1dfc7c4545222859f7920f06ae8df84461ed5960ac261fe31c85f4
90979938897f12e070b1494507189d4a651fd726d04379f12681f0180820fd70
04912bd8c8ebe6f65636de70dbad603adda054127280c51f4d4c22fa185b7d8a
377645678e8a6fcd3196de372947a367f4ecde970d9314cb0bcace14888a3e67
f9d738024b2c4c825586595b291c5ff8d688182be59361ae1804d12282b1e99d
644752500e6c99f1a1156b9574572edef77380ccc4de79fffa1039d7847cfe98
875aa37a0cedc95d4502bbed50a08692bfbbc5589ff19ba6118bb567c78c7d89
2a52dc39510b6748290cbb311d62385ca3132b0569caebc38ec77f8b8bb41ff6
9f7bfffb0515c9382c3a1f8f4eaf5e769ce87ceec9d953e5c15995c96f8cdb83
87d6a6e47ff8f1556d6a1ada507ccdef1343563ffbe4292411735fed2465318d
36342d9042bcec50857cb1883a8b4d16f156d0b56b89a744f2ed22a68ed2429c
c1e3bb6823f7fb88ac6fc291b089a77e9430d3fa53fb5d26ae4f71c4ce971abe
68b1d4d05a16cf45e9fa53b701e4d957d7c7de400c05ce7c324642eab371cc95
90b39a202eed55becaeb192cd69f63a540fb31cff80c54dca4c2a1bb969bf810
48f21483d19239129dd441787c02f066c61075f1a88a9e89257e47c069075de5
019a127fa6e67b68ca43199cc668a7c1946c2bc4ed3e19b1e63a2404d9ec2fa4
b27490a5753d287680e309998d55bb2d25ac6e9b850778a51e4879095dc02512
4281949da2781849c956c78949134b8ac5e605d3811ac6d5568cd68a1003ad44
e0f6c42a670c997cb8e9edcf51909eee6a3c87c91122b310f94dce7ed4faceec
f98a57d6835d0adb84a12933d9d610b5c7f0cd0e7062d358bacfbe7a95d20065
38b65c474053dc80e80e56422c3103b7d42af0787f59e33e0105da0a459d6d2b
f38d840fcf4a00e11f5f91c3d44b85277b5e55a25a00967f50b516c98199337a
4aa128e7d356d80398d8e5a1ca955b6c7f5373b856920928b7dcd5d6f546181c
f55ac7103d9adc6e4656f60f2bb6a65a46c382b2c57682d8de5962db65317421
81e6f03118c63a979f6ee00a46cbfede35a249768e3bae90747e8ae9cb2482a1
0bad30e060e543be6c092d402e30a901941161ad093e806b7dc802127d59c9f8
b1cc1df76cda73632746950655ae733775d47abc5e52142182e15fbc30144157

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-27T18:52:41.154556+00:00
36458737247211492441499825616248524558112759478772
50256154781258725484919556209698028019617306363991
56132459335379705751206919987902674197771532758815
27285477695477721210811624399563228944596257456237
97882376685355284565893374564712065648610532787277
74662989702148016630871437948674160606556746645072
27737725054693926527398677860129407829655088529888
67951733697211832452822521088077517430889737494476
96848641302839907165884897331118060610073812712633
77983644117052700257193807374043725353737784768568
21607313024242319464459316746714467592626689301280
30011855680368218786819993363179902587888400439984
70686185441718809754487875079840457947320651494456
31730214232449034460973229003055003989354155719041
77337261245070620632893986200576363997640435047264
28072360903022164487465362400319483706321476613433
31079725243204810021672292966081784035630235311305
47424425694033985623064769081876826550121487864387
90039685144033384291377941946929140962347148141980
35412926709342490033773604177142004282632579377162
45789229274384299566513119390346860778815852522708
52871354404314796210358010954425513880676078430078
74663515925531069449824431032570476450162340752677
34209788281862169476643213513512199036599277497036
66334975727731407441558940078499704152302197528909
00158085557801249735208031428357365607644646605262
23049503293378093755217909918099632344939567018306
54050053052854385438076575466868609391162946946433
69147411412104583910340160625644632011275076810864
78698811349363638861632189184736200921510986954780

From the PIN diode (digits):

2026-05-27T18:46:17.152123+00:00
71241670440946121400944320317896516232613486197915
40254201120752016497086293052332721247882590549906
38509873715333557434736561170826374172864058401373
55647861550793527909084859995699759956475214123749
43571227462925510118081391210192985213790594616959
13292469693440894615067441689789967238312833445153
56372718127773690724577401313867213829240832120445
43865412739658608418142897317776342491253855186903
42381149505541716303511347201120363862035602754476
30853489914128953624434797742404343077570071828014
08536121074916874615289621165732245235906322129369
02878060344691879788595566173981039940253742825781
11037241128749299856926319430505954299273939803159
23052156445831437875941856248393894911403135662785
09062680241967866341361715953601494154524544668880
33247736583977228681073767683466426656938704353672
11944576376726484883933874791396512690047790226983
83018799641205245070667913494479543246859025445999
65644912846494618750551672203146571857652024020298
16176838583737267192050793015418276623046725569804
67934808439662257758360447647816446517614018280953
41858745377210553307206530722109939237186629485762
20247386993773197538970529269886403816037368964203
12532484814458066035173479167726388731931032614151
16819914129888869022490001568292716483281486664449
03834220278962010510695709434132157400319545957533
39239485629000502780812229535122746140860352614991
08278315848646094083702428909916615410708615438266
90709530789718308998014916332949249858515910107053
62731842597444162638363061117348966790080945644648

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