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-06-17T21:16:49.872606+00:00
445cc5853c1cb6eb490ce37d7b1a944baa78d3b1ea3c5b11e9baa87c2f4dcd1c
f36957e7cbf8e815e77e60102f9e3a93236e7e7d545a3f5786d355a257ccab7a
e97bc61ef90e7a013feae58c809f0d9163acb975bd6f5a009e98ffba497fb63f
8ae878f76d98b66740cc97c7ddead362c96405d18af01b5a6f2b084ad992f032
e5db31c517d878fdb56ff92b6f6792c667c0f27584a8cd94f715d89b00f2f764
82a624443a4a2c62336165323dc2a6b57907b7d5a1377720ff3e03250439bb94
7609305d6a2e26036c5f84008acaaa6f4f910c936cc6abba56fa35549d961695
0c92880316ca4fee097e8e25fc72043368b03f982e2ad3a3512a619a4c452722
fc62e13771ada1bb8eaba04371f3179b133c0ed2fa6bc916869cb83515f89e30
cd647aa907a9aa7d33be85ea98cdb3b3ca59c39a8934e69500e2353ab653a0fb
6bef13c50efbaac8df745a119eeb5a2b921245c52c091b2e5cec4c6aae581c68
e21675e83c83685d0b42a9e614bd4eb1abad89db9870652ffa88b4dfb5d52590
544a492b3c86f99d09b2c60c85c575de1385b62aeb75d013ded5c8dd6efed74b
f525611ec65b5647c448d806e6db1165c5afaf7afde2a97667e70805b5cdc0fb
26b4225cfb0596ee854b4e58851cd7784f8f447fbd10843b2b32b1d149d81b27
f3f74c608d24b845fa3a7a7cf5eaba1da23a2873946fe42f466da793acf99695
41c8f7d4e12e5f88284ce2329504b7bcb15448e90b6725888496014f36534600
49ae2e1381210ef8de79fb64211abf10df7ddc6987787c673c872db5890235aa
8dfc6686808ad1b5d7af24c5f2116a556e994f1470f83121ef3628bb355ab6bb
e61c509d2c983d690c2ea17cf6b9fac4d71762dc029fa884a55811109d4a2aa0
0e63ec5cf0edb0f0aacd7c02bff73a1d22a137c6f32787270e58669e608f516a
2b0f5c24d1d851d08b9637ccd96974cc0670419893ed356d0c36a34fffae7ce2
03d8fda0140384b4111fd29461e09f9285053875f16871e27f069b1ae80ba19f
a0a6d3ffa1bf26b97180c96ccae79f76a58d86c464270836b4669912a298302d
8d78db0daba99859093809c512ce009299e27af9bbf5ff11c8d1d73609ce7e64
fca5e0e3bd06f6e800ac1b4ab2f17d4881667a2d17700cf57f782ed72fd913e8
7b4684f5715983bf28df812ce2e06e2656f59b2d29adf9f3ddc4a4396e2d0ca5
4d4ae0d4ac46dcbadba5c0067c593b5df57e1756422a7bff7010578b6750b699
684064aa32ce4b0568f0816e2518756a7a70c820cef24fbf5a28320ad37990f3
2498327eab6d099efcc79f922517523315588fd1e70c1b744f78111e464118c3
95cb77f648a48bd2263fba3dca405a3c4555d6c5603ee53a16bf2089d8391f05
0566a62ce6f0dd4c506e5a146ca5a478eeef6ea1df7af4d31258e0104b438ad1

From the PIN diode (hex format):

2026-06-17T21:13:08.471629+00:00
15a42f3d425a441ca3c9d7420d694df2c71f49c710620c4816c1a925a3fe1d40
05f2c86fb692f4e5167c5a3a0f00ccb5844837455850486ef4ee1f9b65aa259e
6090498aee1238c7fc85ea2024e82ab731e8d35c61b000f6b6ee93ec4d359db3
832f1beaded2004fc57ccdea183728926248b148af7271d010d8f8d191f819ce
a60f7b717087809d2c22f91b178a94c89ad65b17d5c8fe6b284ec925a0c7972e
758e97d6ce4d82587ad0d2c35ff77e662954bff6b01f2a1cc8322458ec03fd62
07fa44904df30f77c1ded63ac479f668009718a0136696b223d0622982dbf412
2786d1c8a18c3d6d9e8199ea2980383fa693baee5ee3d4b78468df3d88838a6a
d8668a148229ada5c6cc510b21a44428901ca5b6995c467f146d63961a1092dc
eef27433a701e5b7a31ba8ef5c58823a0b5fe3f1bb1e58a909a89ed61d3a4f29
7282d4feda6703f295740c6d5ecf0bbf198ec28f6be653eebcd6d467caa68c13
9d7eff007e7992eb91d0c678f5e0b7190fd3011e622eb84307eb0310ee464998
fa9e3136781dd3162b019422c36e990dae88e006f39ab73ae394a3c7faa2a77f
d83618aebc5197539fc34507c59b530461348c17b8dbb3c11190b3e6f105f468
43210b66519ccb09eace2bb6d2f5b1067ade24649dc6aaed5bbf038f9a8ed268
d57806459b0560a20867291c7a58152a637a2288cc9f87c2a35dcd42b4eb4940
6f03de0e4b4734644446ab11aa2289d5f564228a1a136e96420a94d4bfc47ac3
39a65c56a2d666f958d3b8e99b2b97c3926dc3ee95066ae157708321f17d7d7e
6dafec601f72532d94d019bd88d20f04b4ae1004f3eb6214381bdc928c916afc
a1a693991b44da27e8e5a667a8395b0f40b9535d30963b72f656f739e7d26228
ae78531424fa6a3fc197aebfe0531ae43e88c11dbc6f71222db8ce6542589c87
cea140ec06eda7d36bc07204b280798dc4a1cc6386f56ad43b5e9e582c2ca5bb
69e1333fade3772ae6e31887f09c116ed6514e8763201b65bbe55c5f05de46d6
44f1cf2e67cc7fa799f54d7d8f74058c805b29ea06e29136110fb1b695ae3524
6168b1cc98d868f82d7f63d4d992d33f886321cb176e6c548834d535aceb2ebb
09e759726100ed1b44fb319804dded42a685535e9e7b4b6e7fe7de2c853221cf
ad20afddc4af820e447afb25bd4b133e6676ed92a0ae274a7a859e579eff51bc
f156b166a850a5dc57dde25e26a9c732049bf384cbd8b4a761c1d270a22554ca
485ec9a4d3cc9bdbafed6babf08bd374f04240dd389f5ff19c45371d25928461
c2f5206ced00ae465f9a1a7c965d3375296d58135a2858395d658fe21f3d6d0d
9630ed0b037d5bc979b9fe8d6812177d64873f6f7e2a43f3a38ad92d87ca300e
f384f93d93297fd19108e2c2dfda0b36f022076542c87d593632fb66612b6bc9

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-06-17T21:16:49.872606+00:00
68929733602882731225232648757020776091178668244777
28058721269616475858473510262584906387348562877122
23983014220163402859134599728517891190005852867327
82633820095282036451999800053827901143087446504997
23208111431103469803921732684821550000306636685874
44985197015061946681210783615519326203370457874818
09489306463803089532003870117945124708987186865384
57502249124636032279092642371404510476635246426381
42975476693934985513736187427160671323551960140722
34568453215848002269076970255190335279798995543752
49005358828360071997147016901758904346186997440927
46927606748828042217603104931166692089787771733752
12014736808137448474734360345709789812339717193382
42171910753797309891867196720617019775752269180308
05819238803492055033757888332820794368278916325943
50777327397696413684695822248629625840154811477009
67477250496546953640765049048388778472110337363250
01795483700073744619293314210033269116250535202403
60354581370253704102342838817536971706851053792012
49335440875390828728805744526105124661248596239802
59683265881716577442601499927670240291582934615598
39353914880258964381064315923681395055051606126552
47530912546379742403602003328017314897594633055617
04132706552611615960666191388513280859186541349600
39085480025318625248454120137169528909560997180046
53228717540926006589060072277478257229022245231212
27204647192370321389319140294410388655454173966457
10451265777472708665920624895993262386664223121687
39038082530464007050750504291037241706221232799190
40501021443652502671090958995946372382512188431227

From the PIN diode (digits):

2026-06-17T21:13:08.471629+00:00
21644761669068286366130577993173991698127222936937
63296405118246222490581500813272556988807210315501
70375896447338185699333236428349929776008247775357
79314727007997242455404698727772751413164525661523
13123528574434272338485491230740783760995146174251
77308822959526024184917631422850368803980768447715
19935896210400512460190250783598413018393461406109
58295341285663664786948332046136313806023820304173
65988111336468404428658253927027200999502616461651
67018363276892883058119587308869096858295879411430
03034916120994119125429443078388036640195726002621
46459820832515013098468467070316707352584954202922
43014834951053137436065483584863996267275424748881
51835995690797558304975240238479931744790504673311
02815609438277062236005798709191034354420420066955
05966208034128228821429922343659359463936680736411
03147571520068707117703437003438261910506610489196
22955766928662028884554351954609954906068712313325
25260975963114834548258936150480741604982056274640
45066166475327683966036857911564858393485059148657
98407420832036066393517491832662369329881113344584
01668856356164066707921404782821419661993406599458
88444465870551637319422435561710817835993227018792
95057068460327675377254316054028914106455417157782
49745336970477520445279946633699332310088436525372
46870989149700276849520466663383945823751027443350
33733275967530146822378975196202184660743974223358
87588188867702688065879438699950045532806797931262
37847294645575077139166664565995566955293746329794
32080074709554262450935117410988199040885793014331

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