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-03-21T05:12:29.180143+00:00
c82329f63de3b5b0dce027a50edf05296b97dad1d5006ec4ce2fe41b47e9e621
a715bb842af7575e91cf959c0c80e56dd449e4a0bd5b86ff2e885b40f74282db
2845d0ca580dcfa530ab8ba48300e8e4f8a77f9523584fab7d5fd6aa8612cfa8
35cd0d4b1c82e658eaba240019d429741b33de3710f75974a5d4e30390a703f4
f7a75202047561f005ff09ccdb7ec84143a3651b9174c5b5cd7131cb62d44e79
450be09f5bea7511b1c86df7d68cb6d6b6eb2fcca15c48e9071c621e54cadcf3
8b2c8271588e340293c61caec3a4ae06521838cfd48e75aec45ee0c038020443
7a87d68f589d268b3a914d8c1aece1d44eec5fe82ca24f9fbdf3d34a095d897f
6c57762f8898d5521807a357a761906fa6879c93eab48eecc4803ae6a90b01a6
fb07bd7552eb16f87156034f2561b710545607552213acc24be93c63a7a5972d
24bec6c3d86830e78cd946e04f4986cd2afbf4801d4598171768d66cb78fd909
91ed81a1056b2f92d866ca7a34ea0e0081f6b976785d72b9306edc9b4d67d65b
705b955c5712b027b958058abff7077bf8d0e9683a6f739ee799d8ab6c1d2b54
5f9aa56982edec961f6eb48a27a23b24e27e96f0ecdb22b7e523623b3efcd9ae
2ef9df916264566358fc5de9a1d608cc9b049bcc39ca5a1508d665910140df51
bcc8d0f60be321d684c1d9ff1bb4f81eb93cc0d6ead79203c4d19b067f2530fe
f573b7526bd2b2d9245f9f0d65e2e6388144b9554883f9465186f409bd92a234
09e5622f09901f92fd9831768e009e3b0832c903c6777dfa53cb2ce7783be71d
d12e5829d4b0e942b72e404bab0b50da3314fc46e98668180041388da9c22252
68fbae81e5d69b26395f81de58e97bf3ff36b5a20960d58e3075e5eb0839d75b
a2c6e46b0a6c970f2985c3e79e7abd2a70f7b085f391706a69eab1bf4245a416
6a0ffe29c4db21a584b1f4ac29499e0c5644b3ec8726cb03925d656d93bb5896
e6abe0d00ee8820b12ac31a7700acd8c7576cf0ba73ccff4665fcd318aead56a
621568beb04753e58cea728c5b00c14db64dc306ab84578d0c58f25fdba75f83
b48447f4e946129075e408a5df4f6ca6b84836064fb15751c1ccd05ef78892c8
1f571462b7b1e069a79069c4727337821e131ab1dbbf382591d3c5fcbf56cdcc
75fd1c536963599c67d9c1bc042caee979444390b9052e5cda5e9395edd81e09
3c27a506d3a39faaf5dbc210d70464510f9da9c004b7da13ea46e3e082dead45
0078fd538c8a36bcf4624c657b90ba8d5adadcf7f938adaf2b4a3ad588bd1b2c
fdf7115dacc9b43473e1fc04851a1f15d638e8fa1286b70aa041adf3989c7d52
cbe283c3e4d59e116727c835e76c85cde31924fb5c8a36b1e925e5e37e697760
aaa9ac62764dbb4895e23dd59a00eea240e9d78f7ac6c9d2db895ecac39325b3

From the PIN diode (hex format):

2026-03-21T04:59:18.776151+00:00
9a73ce0372f0f0ce6ddacc5d3238198e0654d71465a18b2c2a47f9b6c9acbdaa
289436160225a19a28e8e1f66764bd67621f6bd2050839f48b84b4569a013ce5
47b286fd8656a8333ffbb831978e6450a78e177604212275d1a5d43c2a39301a
0f0c1d680c6d13dfaca1ca53af1510c6fea9ec4335c316ed3cb60ba7ed976fb0
8748dd296dda49576390addd8ced698105d0e4185db1d7d659a74c44b5f628d5
032bc8b86e4845f65e11f53f99b25262c1b70bef2f76467a0b3bd1baa329046b
500c0543521c77b35c95a8d3019b162c521d26b59ddbbc0cbcbf4c564457f02e
b8debe54da7e1fa604c87f2d6d50414a1d7cb149db74597d1a8af3a471fbc946
49691a01da031582ef79de80b16e194a24989a0f60d3b051448ac80fe503a994
576a5a72ee395b7adb48c37a105a00b441dda3fd4a61bacedff61e91e1e44ac2
dfd7065bcf8376ceb27369eb25c69e017d29f9b3a3aaad3e036afb661afe323f
abe58dc7b21e04dde9d29275c5fa09c14713e2ebc701f9f027807e198742cf1a
36db57ed75722b08bb8f43bb4879a3e1be70777e2dcee4699ea83aae8d201bfa
f95ef3267a0f5e582a82e9fbd2e02880f5918c1447945cb5e8f3b67ad4fc3f29
f65e0c222be47cb14948580d0aae423695936ad47b61326cbc45beb3c7961b60
4735dbebb35dba6792484ee1a0267a39e378ef126f3d81021aac3092653ca3c5
9fa48f80e4c7a361172fc45f8c90d1fb2a49f7fcb11be4f1c48c5371c8a68e7b
f686f89bdd2b9d91f88a9b27fe3c366d9998910485949f6cf5b6687635f2fb01
756c1b890fa22688ea8db019cb975f5722954be3ca1f1a3c44b823c6dcc2c806
438a3cb1bfeaca2a8ccbdcf29e570d06f5c85ad60064bde89df2c4f97c4c3791
ec80423ae692bfdc8ac20bc77d85dbe1d9ab7c754d21c3a1994800b2ca8deb9e
be7e39614e491bfcbddd1c8042386a15aa641479db746fafda406d9de6e3acc7
cc4fd7d1f60cb7d436f7324bd2b93e50cd32542cf8ae49ada7a659513b05366e
75fde298494c6d5f5c0abc459a96cb94fa130fe52b8fa4859a3de7faf27f1324
2afc1d3dcbac24ae05c5afc87f818a7c739bc55ee0f3970114c4849233b5c62a
411705d7a4d9a00771f79d2d084665a38fa289074caa5c030f2af412136e6f8a
967b7befec604ac831ea27ccea93ae5a584d878382f303fa62d12df775b02371
8f8dd378c44e036c0d9dad0721fc4ec698b28b7f7c69df25b0d8094ed91cfdc3
eb73f962581d603ebf67e1693deac1c142c95784eb86b82314a0ac3a459614d7
98d19fa50fc352b13948a3dd4eec99eda0054884af0d8f576a1345b02360a179
447e0331b0fb0e3916c64feb21b7c8d85279c91d36d528be9211808fec1fd2ff
1f41f70b7d7207aaa7e8bb7764a511d3b22712878b58524c5a12e37d99cdfb5c

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-03-21T05:12:29.180143+00:00
35416181763965140541075100109647277133672187324287
94454956122809736089913446369164663040698813654871
39643100672749358879712595703418685313752830888636
00254116275155168916650344670367820204179705092665
67630127451697811349987821691159911717770940828247
61927207289830843944301388425202479828749564740682
24564217749694925602046722354388573839584577402678
95446279598974099337270887184736528224076387679744
11663556478042962858691101660789178222138603793797
83168486078534197294756099676551453690989504484070
79733442282969522323040883430945296105074746022252
14002985182093148548105577039112914992871876398588
05389107230458111558537108294384955465053050311080
38396259362650348335985962744645980086998893610855
04555790210801450164818811333293278030856092460396
55062737481583820778369559130156296885857231708134
09894662520998470944314652491842005859085003981925
83442059294688417666834664757111805120703404240065
56416994348204742955385795298823548162099642481708
57916298071008511541339558228942127633451206057791
66696422061541963365327772417358128668793538034693
01094787885071143011187249671210401718116760029549
38069821049076718340144091009377827795067132874112
88956795318032717018441708657908668472540679778781
93943646318720988377056744059614155530301926779156
37459791861728830599895603938804447421686744850546
92944749300960396506635970941604008115576992048319
70307369002083403854889876012344864190567375437458
36892744179372805215043326312156183483106065735256
25823195581703395308332536923854773726051996706972

From the PIN diode (digits):

2026-03-21T04:59:18.776151+00:00
54150314099350562542068420016139444271827289704048
54220237615440030089039831070508573932808654016071
78343486685163844951420080674223180433341765604257
48261512290412091972618375211698696753952260821167
51117635724109738799447340052905249377896776688140
03438410726994176353788298938311471870221159866341
04078012056782281979924968015522448229388157881288
91768668874684908426316604274509806574292477731689
25263864137073052601032130212877102574365254159676
81683815036948870690145791227295221690008065637497
86304574940691311878150537985801254179637073620306
02265063714199783004461797099371199901392826253566
26548717144308874367877221639012192645055868587441
32279438221594884230402845402071489281822263419412
34432477737288131074665449470623975008886990799950
27967153799386034672786038225720181161290226724846
01606397596443289963972347969540444273772796408313
66422334554357453855396054095352450433485908820418
53011708273715623836417625519587344975312660688435
98940667386077914240588713069000008957962476554528
66584691389411992533712417773395615372007841589026
57977873278928286656062170002021161175640957729979
12835450758562805084447473736766898159055410175273
76099592108869545048191543436433546127193642296172
36740597752729382415559794510120963246518198426523
05646007135745087001634362370776709203154218191011
38502323967449394774908877353130039845177635134341
20967803081357730733789852783927240537760978289515
98882996629103056193936687323484352060725869502052
59651595827757726378536005723275134387061969763596

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 | support | Alnwlsn 2026