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-11-01T10:06:57.998373+00:00
be17412cc946a7949834ba60447e90e81b6d6ba6505ea85b94c8a28c52899435
95aafb0baf33e6e28396d08b1dd095106519ee30814c2a9ab8bfb63056bd4a0a
07aef797a61fc58673f934f211aef6236ce12bb61d922127929914ec244b1b5e
2e89432718e8cd98a0c25f1c783682142c8bbbe5233295caf0fddd270ed8d529
9d39096cace410dcc5ace74ed4b4ec349d1085ec3aa90dbfd59a2f0cca9b5f33
abb2ef50d979c622e91f7af3d36b861ca3a01c151002f5f3e06815cb3cd238c5
5642b703f7ad427d86e7974bb2922551334c21ecbc93966d2c9078ae37061de3
34645526a0bedd6f186f5f32d792020521d84dce568cff2a56f813ed894a2058
422f4a130056dc53a4d0f7a0a4e823ce1d3352a5999bf88602eb0820f7a3bf30
deecbc75c4350e20c8046d3cdb217fc427bce5256215cc5589477b6b319c9410
80eb0df82aff2893a04aa00969769a6d435f26b8f3454a73d032bb411cab853a
9537cce6c767527af767599bedefdcf637aa9b3a3561e5fdca85e18cd821b633
394100d7887a44807e013f672b8f4b0beae9ade5889715a19367c06dc625fda4
712bd9f9ba4ddff26981a1d6d31ab56bfa316bf02be4a888835f2bba0cbae2fa
6868d07087c3ff67783c7c5f60c9cf94ab4ca422bf2a502d05526d45bb4b15fc
84bab46b15e0cc26417419920dc421b8007106398b7867e0c791558329018c5c
70b7b55f193610a4a89fc94eebb7d446e3ea79b94caecaa7e114c1faace3fdc7
2e07d6fbb2f6c1b2dfa467d037e48af34af00a2af2b2f42ddb07de86c3bc576e
c3f21826562e61f124142d1bfd1a5fcadb105af92b7399415a2db0bfbcaf5440
4ec3cc9d4abe62212d525c4823e5a69f8b4a824e57c33449e6d46d88ca486593
6dd0a3b22bee9cf1a5bf116e3f077a63fa2dd3d2ce279656f0f42faef2d2e28c
7c0236a504528004fbc37372abea2b33b268fb7620380294738c91f0f11c6158
682c6cf7fade8e6cd037067d00927354031096b4c6bc7cc6985bd4140dda28f7
5e72175ae2d12e704f3236f2a57cc667f398e73a26eb88e71367e3b87fd32edb
ba1141416f15f1b5bcb1a27272c27c217242d487eb5ce2a4f6eca7bf1b414252
21eb0256eb36298ecfbd24998b4849759f3714b990d18e8809c3c9446a4ddc7d
1dd42ed81f2522f3d86e2d9aaf09633e6191818229a7b6a10b6a65e33ecd929c
5ffdec372325990286190170a34fbfc223f26bebb35e9001fa3eafccaa52b0e0
913cfa05ab3ced168b754fc646a1abdb566d480cd961a96baf79b8dcdd3337ba
7f5adc0ef9e922c07e3bb65dd601625c89d4dc4096afb085aba57e796f480566
ad07de4f443dc25bb4816bc7d5a1b5aba56703d3956ffe3501a9cf7fb233a002
8185e245ee2c015576f18d232a30df86ad23cb9cda68547b956cf180b2353d88

From the PIN diode (hex format):

2026-11-01T09:53:47.594888+00:00
bd08e732fdb34ff2116caed3c226dba2637c2133c189bf507a6d43b79b99bc8b
b3b8e2ef8fd987e4a982de57b961dd6e931f0509d9a2263a3ac7da3a67f0cfbd
8f3c76873f097ad947123bba41a433b6e832c29552cfe8ea67763efbd623a6ae
700622314ee8b727e05430e5d97af43d77d85066bd9d181c2aa4c342e5ad0cda
af6c043724a10ffd155c8514f77017f9336bc285e79dc94b2269755f5e7e3bab
e98cf88c03b2edfceb134ffd4831021a6bc4b0ff06e2b5da1c5718174a872a1c
87022510293b156a60f277883a98e8190e3913d258f1178eb9a8a7ec5b45fed1
64c16c0856f00474f9fce9cf13aa8f0d03f24888c573a0e3e07d6ed479878810
d5ef4bb226b0fd154bc16a85254102f3ec36535a030ea6e057b2e709010a5d77
4a2a4928f457b02ab787b667fc78964c6dd954cb732e782255b5a287cf156051
e07ebd5539845446a4fa38a62d11ebb7ed8eda28c5316a8d314a99e7c50d4554
5182c062deaa51df93f89e8f023817b8f3492ca4fecd25033f77fc9ec9d79cf5
4d96a9df94d60dae5319ae8a8f22e76080c56905c9a525a6c4f8226bef8f845b
8febcae0d6a53750a79848a06bdf3429923332e02fc702e0a8ce6f85d176cecb
e8902398abaffa3418cc0bbce60532ac830b2f3a4691690680b3145cd7bafdcd
6f4e8711bacd4523d61f203c502c9977aa3aa2d8a61eca2a017d0da82d6ebca2
dd3baf1680a5859d5418e61582c8fca869b4a7513d6e01b6bca1987f8cdc3706
6e821f09731042745ded6c699fbb46b1629bb79d727db7781e561b2108fa9ddd
ad3ab20e52c9cad343c2123c9cc44d64f36681b6bb42e8bada224aa1344a69de
cad3d9d2cf0b35bb71c41dced6e8964887c64e8326cae398ac2e9f0a3fbff74e
a143c948c99a02411066257ecb08b893c40f855018979b81257f2fced244bb59
39f60f757339100bc853ce54b3e45ee0826b145d7e9700272382c592c876a8c0
ebd5ca2396f02a9ebe201762a8dc1fdf7b5461118e8ab6867865f52849bd26cb
2bd906e671b29704be87614f23bde6bcaff215cd90beeda3fb541657c5c30fb5
1e5b6dae6898943f6fee4c41ddb6002c242384c6053119c3808481a1b66fbd5b
cbd2f9ce751d95ddbf661be09f21d8b72a17f908be7d5592bfd158c23d2777ee
244091dbf11f50b51ff1c7610a90755fa7c27a0532be2e92e64177981d42cc41
f30d00233a1ff925e19128761f25a43dff6bad825d848497e9f014717804a317
8d0fe5b33aa5f994b953b4c7465ecf5c3eeb1c87d6bc589f440d43f9e3e10f23
4c39d15b92cab188a86c3dbd3a4b2bfeb80f370bd567d0da53e40b9691bfbafd
c2a39c887ae4c34cd5e1fdb734075b8e7b08c6ee004fe6aad5273573873521ae
55dddbe99d6d240c8cc49c0085e1af967bed29058cc92931f392367a444319c0

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-11-01T10:06:57.998373+00:00
90236544706748525286966826442709076680946891486240
82374853497011755131503929491601254829764254849182
48868974100774516631973415521774350843822946333946
53203675279446376739245260949528205430204439873550
49391441575709087216977278805257163358691391544712
55955171788021983431220734286360282116020421605697
86668303736625345175784637815176338847500944442074
55062952008538609011241195504602053377864042861937
74328866477419008683646064352951826553553402083263
91488817965314320409603327963988379821853771230749
56481628134240476074600905185409679538846974155087
65287133584955990382220389555570555853973340338251
57650036226828260163034343751173365121614703920998
37641343867705296126810749074368363195438612860404
12359503206024959648717664349142804505820969877521
32868007213865162546139633840013065739200399458531
41014092128381952554166468597883702185767467209372
99460778937864035538741042784507349588871095243886
46973620452726951690431553659045769188758464789557
74909833458292723566593974307887955273093672014709
63784356659117106307229945395086477440240254650482
28049515147143517804183256024815404528978804440842
08550625004615840316508098882498529120134094142390
46127950546524980352583836190384274686176565112181
88776214149424331466359264679127656682330286544142
89365339727317595520854442360995680677252946313734
10455475099962974529304167826111060162465695553537
53023425011263799194350779944401627570827645600571
60223917799870617186097212976907752184515586279014
34922659829301989237645075763371652621117205027307

From the PIN diode (digits):

2026-11-01T09:53:47.594888+00:00
89085079791708749438629924335193379180220967835553
88397984433569308785971047310509623858589958038943
60183563092271185986656451825094498203186235667412
06344978833984482261198002895724284264956673127508
04553661152192332012235107943357753405179594265971
40400378197972490226079676068128872423743542283502
37164159210696193658522514571988234285686791690093
08088604161970431303723697156025102135361675783876
21759306333765025483900314668778090110931974427340
87764283358203205076098415462034858162352196812689
85573284706456664517834240974906414974539713698481
30929870814758430256238473446437036319585677506948
13748325743843349628970505653766963407433291436555
80675272600752414651504799026811331844355271755224
11880550723111475870450506287920928611783517866935
31326080445319705862663042012513684510886259752228
65335784242130680580678161100182886152274055061030
31091516661693080559877077985583571425832030862733
08577358781482679418605696770002298287668634746152
74051153871396295072359878313852724659106391786167
72540265160237260884479615338024515529372747688789
57151715571611838479943007209326510039353097461868
92355042589032239868312384971742388234200140738938
43061378510490359779358988752144906384228797951581
30910974045248631176658200443635329805492595283229
61821189911729499102275933834223089025854691889461
39193664453180813199971044179567942205509046466519
52296665130035583137454018313764610773309332325120
13200463234115795865488583809970949262283588885968
13671535765791467736680861895875438415551103831150

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