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-01-22T21:58:38.901056+00:00
6f1739bb8247e78f1eb54594f979f237f27354e8d7286d419651739fb9191d1e
9809d1ade01bd168c9f53270bac3463e1a7f877971f167fafad8435eda147915
e006d08188558eb3ee4b0f1df4f1239e088c212d3a1669a621fdf362aa9f5eee
205f8327722143b2fc0f44db479840be6e3ebc66cd8ff81c20ed1b565861a505
da48384ba46389f669c625bec0cac1807a7e1ec0190da713174c407cf40fceb3
ca74da08c9d0bce39efe4a615c03ac0607060560250a3efd3c9e3b27360c6d38
50e140da70069db825a185d6642f24a7b4fa49971cc612fffeb17f8799b03fed
ab09f7a8eceed85d59a0d1a955e68129c253161e26ca3e23ac8e04caf03ac925
f8dbbc7d39fff947b5f870ea73a00654233cc4ebf9156b8bff1ce34489e683f7
c3f30f18dae8fd7ca6777b22262baa263c929ee70b95ecf22b487f1e5eb15690
cf3886b99385c8204109db4ea3ec6dc573af34ef501dcd497e825e911f6c8f04
545e9c8797f9dec2b99593f324cdca7a0fc6a7dd0e91793f6310afe7360c64cc
af2dd6bf652af16ab9bc33d406173c5fdf6eb57b4a20e806fbdcc42a7e01840d
6c7e07cd499b422b491786400c4643523f5fa349f460ed413469e99e58cefcf2
59a40a8588a433a71c2ffda409a48b2ff2d4f403be06597af84c22b009f7aaa3
a2aa24e2cd06d627e64e1f44fcba14cfe8a55334d31381a2c5a6bcad89264726
1a8f6567dee2c0a6946e853dac99426cec4baf782e522774c30224938a399f85
a4ad9c96ecc5cde2706d25b833416f462d5689155230fb1492bde5dc58c8ecb4
4421d946a4689ac95d79a8895bb063db26ce645adc84ca29992e0ad2ff7004df
76cf94c76b4b53e4838b0763376ab5ad18513b79ae9b8922465a45e92c232f62
9b77c4d2e20cec8ace094bfb2290c698468b7d30401faf42ad0b4f15b9194cbb
1bc1c2e5127be5de45ce3e95f8b2e5882e6aef0ade243c94f6a2fcfb89ada769
64e5eddad2497fa044aa3de29c8a7b3d3b9a85476f3dc238c653b86c5822abb2
03d1bdc0f07d46a54ffcc386dfbaf154f037323a85615d0e53c0c56742d8f609
fe1b2a1c2736c8c4f4f1bbd4dc9e7c252a3efb682f94f02af0136836dad62684
702b04ee63c116fc872635f4810715b93496511de6ed42f4ca768dd63e0f7016
c632c6cae3141a0d87a7533d23cd4dd514f00ab34a0b5fb4f0cd423bbc00415e
ba9a1392752eee70852d680b0c995471752cc532c5bd3ed1b7dca06a0b7886c0
b2a512167a7a64b3b78eb63efdf2c1eabd485c7c46a95f827b64f0ac9c202f6e
2bf861b00ad462e88ece970fde22f3ef491eceac8d8949d18fc9925610193bc7
6bc92294b6d26d0d2a62522267b47f0637d2599e6d283940b9150e12434f91b0
5a6e3d8a797dfe00e5fc91382ea6980b345e98ca0b9c841f1b8b6fd3f416818e

From the PIN diode (hex format):

2025-01-22T21:56:24.902765+00:00
e62ea299d731d432ff8c61131368c66a611f83bd956e785aac85dd37bc46add5
532b3da91dc310fe2e4e15fcca98792646997059d0af07c02dda37cedc93956f
7490bfa9b98607e237d4325b6180fb7409556f2c64f0e5a5205c168cc10ba641
d01f41928ce5e02a1bff1919b1ad293964ac90460772f935b642b1a1e8b6d9c1
cbb1b444d74b0c43de000a1d16429f25f0873b47b394cc434b348e06e4498318
df9a49f0ec90d45a4d6b18bcce29b49ee7e3f505954e5c9fd94f0a87cb2de79a
ebd5c5c234a35181e1580ec91bfaed97ee929d6ff227752de6a710674d27daa6
8a4fe6af1c947c06f258ed0cfb0d54a3d53aea8e148b6cefcbb0e2999b3f2453
0b7af4455a50eca4db670d3741c46bfdc74da33456f40b405043bb0e1f42814c
31f6d21cfc2e728549006b6cdb0920c77bf0f89f6965b2823d33757f8e5aaeda
65c1bcf7fa7772e2a1767710126275ae8644702ac07e78b204282d2a74940fad
02ac01aff815486c6f83aae0bf13c88f15df0ee47928ba57c1e6a8c616cbb442
54ea5a17dd5e02a6eead8fe38636b1bd634cb8a786154cd6bd8d7453835b7ea6
76215dfd2830a2ab12fd31bb9d6d03e429fdc316bf57ff0128e7c2360eab2a86
ec51468d1ebf0a830af77141a9c73d679617618d48fb4cbea06aba006c32b18d
c23a028fa1e962f038b4b940c1a625e6c2f0fbf51ec13a1b6c70c13c8ef1f7da
e0c6123df7000d10fa0e3f9a5b511eb1d04e56fae621b903298f8bebbcd68bfb
5da4b7df9b1d242393f71711cbbf5c1173d4617fa81549276dd98c47cfb1585b
f0f7de5cf36081045f199b3698c5e5aacbf9a43074863787811e632fdd983585
8ea9a71cd6ad40390ac5d35e07cb08b8d0647aec46fb456ccfe8880e55d882fc
28d7e0cf2fe888c424c99981457295d653a987ea30fe5e6971fb3b5610d00830
7445187b948c006dec7e5d22b2d9f888e420069562cbdffd8f5d9d71816be78b
8fd98c0ce3ef9ec2adf3f6437b65de229611da44199b572c3f6d4df9959d1b43
affc17ec9c2ac1b859ec847c0e790551c45493a0277207f1fe227e775ecbeee2
c73bb37ca9b87c1fb9f80c4a4afc73f7897ae3bb7b2a2c3504cfb9d398f7c83b
f77c344815fddba3b5e53aff9409fd25ac95fa90a9a1cfc877d1cb5dd3d0f0fd
b6c6bdccfae374d64b57eb7fc6433e5f59160467006253644e41503511306047
ddf36839aa231e73a3e395e3f7041f9a5486429e0732d63b69e89648e996ef6b
6cb6293bcdae9a696fc939fb466e2649eaebb90d9bad23e7b2dc153bec40807b
1431ee44e1c7dc487c29b17079d9aac235263be6ef078d9d675018b720242a69
3fd983faca2674e3621f68e94c79de698ae1673632a2adda075d6abb758ad48f
fc05bf3400b846a283e592f32413a4d566acbe7d79e7f345b066c6217a24623d

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-01-22T21:58:38.901056+00:00
11235787307143308169482155158440096550811559852529
30520973270450128695706226273521130367942021210629
36854279751529355808403345582205663398705994329531
39143367781568715264901062880243283227868897650572
56756499370598379092932822263092251367192376642415
79160888587497920372060706059637106260585939541209
56806412065784376133004736678073512898187727355376
63710968938960698529419483223038623572420458378825
57718112156006843560962107392868373195152424661923
34384370386046581149437227309477864456348547333265
09786309971575528029732630944531084304849456355194
85494736221598671445216399167554120075459101420685
88510623609510812374320696422601321308260773556643
73233464127067826395637396655205588889641033366451
67284764096439470390068922763476097063627036063978
31688620658352192962976688733738713826430103926648
10336172536608757520468239169502364738575933647356
50971209378451651170458637218248204689888068337064
04549321683791769938009032415346101204184899077583
31390799550681732481592174553734709069443547985519
96123809753444985270392548643175667311792185257687
27939418236962497836460610366048623773670500732760
68706156382361595433711161945698838408883471780389
92257065799534868455505833979314839297036609274228
39549687582437426204474842190454383212430499932235
38532907218552508129661841621512229850982026133567
83613577201079741195806659880065948654194617461233
45041112538413174497509789628360061120349278651822
22220079834282629389729224706995302300725632471043
97761098425115347330724137734346861625599907344882

From the PIN diode (digits):

2025-01-22T21:56:24.902765+00:00
46625349504097191904980697313189491020907233558870
73834361692995164678215221387053128975079245554749
11164491698534075550919728160985114400653292224093
11666531654640422725257773415700724470071453826677
61829377806875126700102922665937355971794867755242
06733124547344907707248841805805497892597910354554
97945263812988142751465711391745671603773966387975
28482406881213846358422039087653556336831122699080
64031355659607997763528611648067871431662976492846
14337300070809329923590501783061511727429074019388
19146118191618981774346812429226207804404542164815
73027201752172081131709119432114214086879368982280
66849023940266734334547789997684673421768941168331
91266618339340486271184987570903419522918701409454
14714234817041309110311013656999610350239741727690
60068600085077419458024361985680856493663794309358
27081293604298186100131614635491813077788633850341
43398839936483552936354723179192171597276821733909
40717788919296290495255554529770644816345535293099
47525333426967287364571097940708840022706908361485
30404736963653296914498369354894051359861608481669
24234840000926933478363206499843935713290739434012
58947367230134501768255587446309774957276775235642
93848932241421058196844760391407342619949959792469
84243185127474153722872342445304855259245272216381
58480937724944696119938298891675872798676295892204
03009883007865805317489671045770353015634904315484
34665807505905507250070882415974540511577010387385
13557335782159642823204968997224417712217094533859
07415703802483323642056331381698310476210538035450

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 2024