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-05T15:35:38.161297+00:00
57f198a37126027073cd6e1a479f16d6272d961ae5cb5b4e18d03d57ad38fb93
9782baded27ba13ca5a5cd7e832fea3ef3cedc9be384bb26912f64d56860e0f9
685b46be79bd3fd173f9aacb1e234e4530b60991ef69b2706b878447a3dbbafe
05b37949284624defce7cb467d1fc546a7c45369d42d34c793ff412063fca486
6c41de5e4051b923331f83ca1c723b2bb19058f0d66d92336f66711ae9a8ef22
25237aa47d434f32d3f1f71eb36307b26ef89940465628f323e29fdcdb4d4825
eac032905925536501ccd2f51453455ab8066daa54ef1b1228037ba0fc8d074b
22dbd8608d175b82b66fd1a865c5b20161bc42de218f8b2c9aceb4547980a0a4
59ff7833ebb3dd70e92ff48036f55d92fe0a4561fc66d3ca9965551bb61caf43
b46f62c200fb4464af742e4359b2b8786905b359bb35f233c98cd821f03608ca
93175b93e9303d0c83bdbc05e4c00805e384d98e035f3aecc94a580ddd36e4ea
a16fada5db5cab38aa0ffea3df89cc7645f5d623667979cc9f455b41485f866e
68fe76f7e3c95819f38235443f3ef19282c8aebcb6ef5253023075cd0d73b6ee
54915100ce61b0ece36910f9fc1dd6b58432db98fbc3b0a8d8a2106f148571d5
9ec2bb91de244ca46b6482a553a0f060775a651de4d282555ed96e6cbba08c38
a79835c952757124c25593f1385372f65b03fae3e2da8652cc3ba642da813a51
282caaf06aee89369f1d02c618020ff5d06ccb43b4b75029bc12c7272e485c5a
8e066f91713f5596ed0648cf6a95ec0c1bf7d664fff283b92dd5b7459c5eb1c9
4a3ca19064648efeccc6b64f36503f78c9d5eedbc43062f290321dd3d0d1c445
d1d3a445d49844613f0df0a04c3095dba4f10a07f034f7f77a072fdd9f14699b
db1db910ef1965ec45f1a7fb97ab03f7f0fea0df2a81b8eb0789d067aac049b5
9c30d7098631ce3ed78bc3269fbd46082081c7b6421a7ab4553711cd787f9162
9df47b9450b243044ff8f9e32c8e4ac3789e11ffe9b515251a5ad6adc432e603
a011fe5bc6e2bb37a640a46a261423e1306cfa706676ccb79411ff142e777970
b4671b05873f55d9c3239fa3ee372f34d3f824c334daf5ed4809f9b42d5e028d
980edbaf362eab25498ce835049f465710d3b9825d9a652ceb504e45ef77f24d
ee8a1e2caa95ff4a806ff9c19197e34716895abf649629e08956bbec66873bbd
cdc1c57d055ef627ec8d3599298c3e57343a4219cfb9e387157ef4f63e50a2c2
ba5eb14ad212e23d8600731f6c397f1f66d38de09c5f9e5f30d2b8aa3ae43b06
75c5e60873aa918bf5b2ae733732f2716aa928acff4c0a8cdd5301fef3e36833
59513fb02a2a92561c6d49ee43404e82f6973dbee7f49a1acaa849fb338605d6
16ad8d8a85b67b974ab75ff5bcf1bdaab86fab84a69ca7d3c3ffd8eec7591a79

From the PIN diode (hex format):

2026-11-05T15:37:42.161825+00:00
a592bc5d56c9ce3efa88cee8ab5c74ca4b5386db2d526a56ff17d038e596516b
ad8ca5b50e27f6b95a72d9a37662d7c52de7575d1d69a7b5bcfe8efdb329f0ad
fb5f03121411aedff2292da03dbcdd04f038b15e822721e4b18f6442232f667d
6b31dc69ef4e59cb8861367276374f253237db6537dae62c49b91980bd8fc909
9f26a2b0aff2a663c2761951403a6119b144dc8c0866864bd292a202b06af41a
2cf333328a4a4d404ccec24812f0bded4073222a0c6833aed4409ba415c71545
c34610766006c8d20580be16acdb2b8700dcd371f619e9a5f82dc2e4e1974cfc
2d11d494c96b37b00e2d9fa34783b64cb22b0a9d257c97a84e48d50b49e2d1a2
3d61050bf3b2d6a2e8db59ef2543185c005ba943cd4df735fcdf26bd9de00b43
efdf397ab9a3af17f18b06dfb3cdfa3c0bb574395d437e49a133e8aba9f59191
3452519d32697c63bc54dce4b5cf4374f04a400816ff6610ba56674e826004ad
5581860c045d9ad17a72ca4cae60d7cb0650709d8003534b92100c0d022e233e
32aa597981935f4f0a6858e4475f5f3609c3f3bd2426ee1489237c4559f7ef7d
7a4137caba1db2c0d4aebfdbef907529930974e7c57d043a465a384c9d03aafb
3e162598e48b1d7ec2efbcfdde4a6b6a62268fa492fdd60926a6da2882266388
754090cde63522a6643a48e3900cb9034eacbe4af1b65e5b6cb05297e8f4e7b9
a0fa8146ef11ba929639c904e2d619348d0d114e1d259da3c359cd455a9c6575
a26be7b62fa2b5fb5bb57caf50136f89b5fea71e83ae683a92e21aa12c2195a0
c95afed76046706399abd1ad3cfc7de301007f5579fb66659c708b8bfa184f0a
0207b47670b26d081d4dfd92b85655c254dc9076b1436cfabddf171f0399110c
7931a107f4aa554a13a29a017e938dcefa0e80b5d0677d60c3ce569bb050d82d
310ee6bf99aa0e49dd371f7cbbd19040fe54f7a1617119fb7d51ba6ff953ba1c
a6a6b90d7d75947338b24496d25ab80381179213806bf37c5f7bbbe7a3ccdd9e
2adf00b821e3c8aa4545c57f038cd3832ce1bc9e7067bdb1ee693e645534ada9
6c1746e8785d0e2913f4bc677466acf5a18bfc0006b8ffa4f7ed99f82acbd916
034c1c40702777b8624571603b351a564a94b86edd1f49af81e1062df9c5448b
362307c123829aab60d5f9b1c176640f7ee62bbdf65d45e05137160193072cf8
08b4311c652497ff0c47ec28bf3c6609d9542f02222e8dc79ce3d8ad04315fa3
afd4ba53ba492d7d3d55f4d56d52c3672b613afed1aadc0ddaaf51338614e6b4
f6021fc8426a26ebde54fc38ffa0e0f614bb52a0f4ad2e7ef8ca2aae909ffdae
dfd079f7592677fb3d3ae7100b91d46e365ea454d6758cbfbfdc5c07a24a222c
840890f435689e059108c0bf56f1649f23a6cb29ffea4f8cbaa24d37297c25d1

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-05T15:35:38.161297+00:00
87526313380212151026715922394550269178246187735647
51308623616065652631476255328738454700049604917090
21896315703035786948820945057812073532716386057921
73407036702531977067968305455299476532996434086594
64818535513131281459437744880946511102132668343735
22642567795030799907781053647086403559777237925044
89378301012083699084060970842718400323604107753496
41239130821168019778019788663343394454808421286064
89205179124728549346106997025301852782287567801198
94006800751646678978842005057989875351403354084723
91474861123189880592080532420395587488135461117365
92715670156337186935022121596991657295341004188825
30536863624630748882828302481713158284458100977605
16298132505295766862161120331358948745367664070030
65836096199001293085941008876040566752538217133694
85475683149103348259666629588140447006375459290298
24021508678083804188189939467292904206114513638550
06720649122700318545836956947774606144000042988279
54806320964898445029966964695268976313607648496410
07522207475920055529851625016967517103604229840737
03709273815648093449623995385989700832299982662622
80855517202745985723488078670479444274952058178121
37269073965003601791988755666464063820354808120218
83481720461921128003270535638595355963554752369552
72098045940241521475544671377340530459708716853093
54014480786919773830447049742811934551712237909100
50413786870235598993972505943941535341406287525866
25853521266280629486947774186134001531085727310241
56955895488470585906179708157045397874155550130669
40727610408301045189816376424246862809736764783051

From the PIN diode (digits):

2026-11-05T15:37:42.161825+00:00
65468893866236719216758334458206862356508107734065
81143985901463189897458793290567818842794173950318
20177441456061880456779430393377430066354702250749
05788936975414185579375055015544738525288943095938
62767566999418258164589725776840080234754662027606
26445150387477647694721889641534421204517464556421
99216995701618960605289022724335001325654594517645
17480755761445596371318276784310573724516878721173
62619705117862893767249200916967775338895711675722
85637523390679601181165793672673615171694545528281
57500524998884816716746408220216868603783096047385
29341204935422147674960680125728038375461612130246
35625070892129479579100488719595540995893638203735
24698925226555862978927491441741470916972504587090
56765703706222375239292694887407069838436446093866
40303899361764445334660058724412850378729074829491
08768251856029701786465057042552411317782937576395
89699056011762078247628191812475801911378167303174
04584626614433496090967012995371736025010027852102
01561239392479100207801812780908297746848685948444
18776708892331035317122149610770857419625401264741
14288103259695865576804549149153701473553124874464
84619713252581861183862866668513251748155678685090
84032923461928072495238763584200843370696997270340
31448858120389770562008552736908237020931441198803
16027261390006846453422203762864123919849869139659
53268674488410317375290645976839543507933530547196
77931800152643899369815522014707440880492801365112
71409160020984470234464199567304499563758683867345
25618509829503439758701375815134208002316606388456

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