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):

2025-05-02T04:16:19.954905+00:00
80a295306eaa08cef4b637330c9c2d866132a0bfe728be4a3c39ade6c47b18cd
daa084eca7f0d20cac516c6ab6b8222ccf5501eeedbe962e6d514c11ed742987
239434229e7405c8116d66bca54a6d3affe2240cc4ebe552352630282477728f
8207b2f06d722cca9f0175e7385db32cccf5bf7fdcee052aa68b1b76fcaedbbc
f460c06b29e2841e3f0c41bb3c4d7a94cc5540d13fc495ac3708f21832f30611
abdbbe6cc35b1736cc69658578177640c645c722d5bfc2083ca392e5191ee287
a4305143c3ae895c513c1cff999a8c15009d3c7db7ed211ff7fe8b587c283cee
d13963dcb848de47469a1b2033d1827b708e1537e8e6ca2e3e91f0300ec7c871
35c30293d0352bccd3b13d40b928b459a206b98f0864f8378b6df1117a60ac0a
3a0e89fa7ea1d6e7a55c439c8d9b76425bfc9503d14041a17484e780e224e8a4
a3e9e82806be52ffbce8b18dccd03062ee0fa1bffb8b6c74618797dd1c9507d9
c5de6b36e2107d58c3ed6d784014d0d11f74ec5f535de9232878fcf6d7b1319f
c81e233621a5747354e05a4a2549480bb2a1c7f2ccb36d1b53108d54f1959107
3b265e229a4d3ac4b2885aaa1e9f723d147a1b58c493344c033bf2add82964d0
f6eb5593afd1426580aa23451395fd7743b9eda540da99173fbd542294b47241
0e9cced34bb6a9dafde4bf3622e7f6c1b1e907f71e70ba237c086c98cd9fc06b
ef5b9886f18bd8cfe522f54ab0dd6c8aa61db623e2ec1aa2b6d61900f79fdea6
2163590e6b679d9c1c61e643d871e40df3dd866a569714e7036701b66a10bfa0
3f34e8798c7711ab28d28ab035a773f2fdabdf9880d21282a1249898c099c041
705bed9f0364a534a7abd92dbc7d80cc7b81aadc2de36689313170b7e238d47b
80f099fb320ab72d647cc1d3ee3c665e46be5c4850bd546c6d1c8cc086f0891b
bc3a75e6e29e997607cdea728f2fc49e8f1cdb44960faf9130d2e2ed52489294
1d637788ed9a6505e39129da37a310bff0e83a7d17f9bad7c732874550b95fae
b57e11203ca178bd40f351c2a90868dc61e89f4aa70be975852d2def70144583
4820d3142354248423ec224fc71588c203ae3f3ef7400610f1c265234dfd36dc
14e098b07f2b405da6153beb779676fae01f18950a528fb02f0621d162acb06a
5b290bd9842f0b97ac38de17f3df41733591ffd36e56e785414253f46f17876e
903775e73e3215d83db0204ebb67c124c32bb5cf14f16d9bc00b4066571b50fa
4688e45f44981197c7780ebec62a7a405255dab5f8c4be3726f5fe08c84ede47
31c68d7adda17bfdf88296ea1111fab33f7e8670a9cf39dc83e35fb589c5f59e
e46033814eb90b50639deaa57035a69010d3200c14ebaa957b0dc0fe073590d1
6f7e7986691fee42685b233edac3f2a1d3c19533f5bf65aca5e555dee639a7dd

From the PIN diode (hex format):

2025-05-02T04:17:18.743274+00:00
5cf9dd9e406d5a958ce80fbbf8d7c6a1a61b381730754404da28033a4da296e1
c52b50b79c0302faa11f88937a0efeeda1472d3bfe5569dd87a3a1222ea57e09
f8cabe1fafcbf32e7602adcf7241af4e119dd6ff730dd92db309c935600cb44d
5c8936b19034f2c62dd629a73d7453a84576e63b6726c017560a7a20ee7074c8
96c1653b196645b4931ef98f9a61e23c7ff808f19a8b6714e1dcb90fe141e85a
0ecf872b99d071a4f4729dc3f7329d0583891329e9ea5f4494b6ee39302b20c2
5ad66326f9437404ed3568fc038a3055396e568c9531a7f87d9ea43c9a22cc25
d3f1378c1fe359e3e6283a76157aa7367905656ecc346e6eace50e7814c54803
fa521d5e9dcc660852d4391ac83bcd2b23902d18c16712f64d3ae454b133d65b
1159a2c2b23853593f14c3f27aec7c926a6b3cd1b63662ef36eb3be4299d6876
f6dcd6fb342848b5056e247c0409e5bb4625528cf02acbdef19d269c02627c4c
c6d0cb65e1d29afd00fcbe7fdcef69229b4dbfdfa5eb9596f2d728118fb8ec56
956fa64e5551d88cddb8a5cba51705f588149f0e97d546cd8ced0b17ea3a4aca
ac5c81e25edb5a3314f55493a6a9272c5611f7d97b49481e20d18f970a8e3005
6d66102e8161f8efe58c19bb45ba13c7b6460f1ee7055d3ed72b3c9610b22ea9
f602877acf7f5b401eb1229eed1a6e5d132f7029f8f25d30474ac7c8649e7f0e
6cbc3e6b90adde34cd3158709adac113d9e1f363bfb07f4c3b886514ffc80153
75e1324f80a45e213a2080c2a6fd500e12d915a4ed227737da29976ecf0b8a5f
3417c23c212fa1e6d287677d1248ce89b872231e467f8cf2027d72472abf2b3a
98acf2e94eec14c92a3ea4d26bc3dd302efff9ca48e7409a8c1f749be606eb26
351a34fce321226a359903fdabf4bf1cd18cb06ef6334cf9ac011781976ba5cf
3a9ebb4e5e64fa519a054448b8cbbbcca9847580399366f14d6924fd57f92174
e7bd21009171bde9a5e9604ab39eb641c036731d8856146125f9ae35e63f5d99
03b138d663c64b6b3d73387f5e8395c571a84a7028fb823bf8e3e97a45e5d238
271595b19adc5e39e4003197c9aefd1c5548892258c0ba7d089458dc893c0d45
596dd51d494e82f645a5911993786af0161f2939f22242e914db4a99deeac6ef
9ad9903344c33471e19f01d3445811830caabc1547c682425f9aa721a46071db
d7bc28ece6eef37918b6b9480240286dfa1aca300d2dcef8518a3a432c477f17
8272d9895ace52f0a5fae44a3de80e41707f913e0724f25185f06f6fb54a48a8
7cf5575e8774f6e92e206980759e5e7035788ca5c7c3292a7d821993d474129a
d298fb6c7d9c8fa9681b0ed7933fb58d43aefaa3edc1e6151b454575c0b965db
ccaf4eeab81f41ae02b9664b97f8eb51fa4318cc4a620f5b692d049fe5e06c5b

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):

2025-05-02T04:16:19.954905+00:00
28624948107008825551125645349750609140907460577396
23246032671272810806828434448501905046098176171641
35354852345816051709028865740958361296825338484036
19144330077809144459011756937944912705426639271874
88969207413230631265876077224885646396497255082450
06177190089591235405013320231864986999349194086063
46253035644881679574379281602853544021005760258333
31398824406057998472717054273251302312422155466245
48149913539502475343776164854080896206854308005539
09172296721058143726616592675641551866914903646561
16322836646340069082887741489815619139081697355128
49079707541625889509206420311695839335402077495930
35543365161584907437737211786199790927831641844945
07593894345477589678369070305914612022278896475276
03597341008547756601287035691949196785656453236389
84344880146514567582699154349377073012863524080852
59920791523439347476083866298235266282250059663399
89140703575628976713133406865120030301820616916063
52214019177140387653671571522818306136525292539265
12915903006552677145882528232970450237494912835623
28535010834500249360029470909272808984080928409234
37278858175853180714434796584328685015754548827246
48299919365401054541556316915825238699503569808595
74812617326061208964819469080497597467111733454512
20693172322035843632353479992136940374636264061694
01357754205276274364936621591950183124491082437647
06339872760691411132471151725623651553451086336566
83112335104455176250216176327887039336954381200955
92116402872780703695685217519920149098422264828581
96905538087871499841226123305017177963263412695731

From the PIN diode (digits):

2025-05-02T04:17:18.743274+00:00
92586409904940158798616627562348176804400358776250
97438083560302613136472214617145598505356361344665
26099031754618027314657578175715134579095396128077
92375477445298454167611683686918590338922386102232
12165093015925026980473043549760270854390320851565
90143543531364145795505705313719419568488257484332
94909938671604530403384885571086404949672558646054
34375540318940581821226754210501105210107214202097
72038229945702088257265943354445249303187758847751
91178962947856838963209522244606076082549854594157
04185240728105103624040987703782404257385602982476
98015400902705345577916549504017438486491166788581
40846565230536205914517040112358747292299490512084
47666939448617237372303243511042480509021646299740
25876986199982701530059362436050167846690235222791
64307734582610931947124193487174990058271408886207
44735249881254931999917627765936012001831750792864
94335832289466801418216434195541511011389552239460
33476135032518723784143530702740022514714291435852
72782042626407954846726454403116550638532652333406
53530371912840761051767201232951076558588778940081
54056872848769321728574702770536873316893300451389
65967479588265925415293686209737745363935303775699
98750761155627943149971368741240305922695639214977
54945700495174288572373488928625084888376013698909
29737830696545254720062231415734662074539854445168
95521359016888173112708821719830669554673364961388
40212482857202644009264813458138586744712723301437
90826574611465122745620736813311118174726824879435
16463205281758941253204065999541422530254716185452

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 | Alnwlsn 2025