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-05-14T21:11:49.783520+00:00
160afa82f662a21adc90e1d3a32e4c16f4855617afcd08a191c8dceb6276e4ea
0660d22421fd6b19461c61d90d97ab47c7d3fed0bd142d2c19b6333a28cd2f1a
f4675d246d8dc1d0c218715195425828c06d04119ba1ec642c0ce5c90d8c822c
285b6d853ae69321d23b81ff1024314cfd455914e4d70958ed943b8730477ca0
6f06c32793277138d600f420da01f7354607ca4b2916095b2092b1ceaadabb3a
89f06f5f03fb15dae8037748163c6d5f03dfddf4943f7f23cb445d67bef393c8
bf8cd8a7412a068878568928557a3edfafcdc63a314436fe566cce5426e73ea6
37a5dcf81c27d1f8055b361d67c1230b410a6fbf5c692c95f70cceb9a7bdd4a6
3c3e5de0bad21c60d68cd08f9443a28fb0f58fbae60bee88e6f7d54f2a4907a7
23d40064b245e5bdc46ff3d498edb6746a9ee5d86165961c14054742b7a16660
f4588c5d73dc4ae3b8bdcafc946140801fdfb34681d17271b3faf0b9712bf4f5
4b0605f2e50fd410f2c61f7140b59d4bfbbdd1e257b893566fde0b398bdbbf36
3c6a6e5c043367ce5597560f9cca15668380ee1fbbeffd655b886097b2438ab9
f99c47bae16879ddf5322df8a292c7a90a914dcadd0e93311362999d720512be
c8b449b4a47d11e41d4faf82ce44611ae984f946fc01539a0908c0ff3f2e28cb
cca60e646a8e1ad08560d58833c70b341bc00799e7bd1c91154d69e17c8d0b1d
76ef0bdb28dd4b8ec56e174ebffdaf97013665c36f470a265c61cd33cd48a11a
8ecebd3e4b345958bb1667248af1664c8dff3a94312ca42e5a529c24ef304eb7
c3fcc23ac18b63424d4ca40549680dee75f45f68ab8da1575ac9faca6c3bf1ba
39fb14c545e259a663203b589e3733c64e7035a73d3fccf80375eb99ffa86251
51cdd27b03166b314d91fad07e93d2ddca94b46480085d85585225b09598fb75
0544f6d3735898be24e6c89df1687a6607a0b98b0a7bbd50cfc03cc2b5887c5c
c90e58a086a7bee539bb16e616dd30ee428940d3a738a8929cce0afa1a5e64f0
169ab5a3877d52311b848619c0272f520c2eb3f018e42ee6ee80f793e6c5dcd3
bb1030e2bf6a83a4a21f253eb50b056d2672d9b184f843bdc81bb10adf641b49
fb463668a2ddda46ac3dceddd158ad5dea6a167d21fb3eca2db640b37f5e5802
3fc6087b4efb56a4ec347d240750ccd62a5036304a2355b56a54f28321e69a6c
c029585747e1f0db269d88946219c62e3eddf3ce00088ef7e3a3cb304d33baaa
8d0f7b6bda54ef38d769bb81cc086b573fcbf509815ce3a36baeee88841ba3cc
dced96e3ff8a1bd6a9a0bc44e749017fa506a0d031d876ac18f88961460a4bb3
1f9c142966501441c326df4fdeb1ca811d7c73d5e02722d77852ad45c7974205
73ca694f97bdd421d40cd672d099449535631996e29ecd5550913d4fa9f4f793

From the PIN diode (hex format):

2026-05-14T21:05:07.381879+00:00
71d6b2381324a0df69c9469d1b406eca6c49b2d9d21118523cc73b1e7fad216c
d8f913b71c1e4003a92386fae92a94077c1e976cfd8e99e18885b9510234107c
0bc1b6f0ed0ebc1152872c5ca171fbae7b91bd23a591000e1601a4e5b3c04ee7
a76bd520d1ef9fef0b48b7734da82532cd8c5a4b9c38570d3d2643bddbeccb4c
629b44ee81793fb1e38f3f470db7eb29529295d5fb3f20e22895035acafc471f
ec8964945dc80ac10d0724816d6e1b4304d93e8ac9265aa3f4bfed4217bcedea
ba646374f939e1f07d2fb09525f3f4244f7cb3c33353c86a495a1972514d6c0e
2daf82cdb991b37a6330e29aedc91bf94b14e1887caa0e1a84f3204923e0ad8c
8a9e04d50c6d1c31d89a5ceb5e2edfc7d3406dea668f5be6fe87d5eaab5921df
1c70ca459c073cd4d896229a9c6b5dc64f82ee96bf2d6fee2c56c2f4ad0c18d0
e4166a9aa1513d4f4d36a4f918e0c5516487dd020ca51dc1732ff3498a2b19a7
93c42d2807a42ab39dbfe624e5200e499bc572adbb84ac8ed19dbb89159846f7
bc04351693284ecbee11c5b13af0eb816e331744400afa1052b50aa093a2760d
89f42932c9b03a21f9342376c3437c816d9a5a9393ad7062de19579b6973bc48
13573bac771151a911dabf0342596e30c285de929ffebcc449cd544893ee9485
e7aae5ea3a3d7121e93345cabe621801ef520fea04156ce983be2762dfb59863
dfa2a1354a47bdcdef65aef8453369c9aa5d4241332029e20f5b164dc8c49d00
c5388d54c754327a0e5f9ab5f7ec5ff30f091ff1518825b51bae93312c47ec21
76ede9f08fd0d07337657b2d1903ebd8b5f90b645787eaa89d392f3a425a9e22
685b4a36b83d0fa5febd7b8109042adcc9d85189b1f9e958ae5552131da3e8f2
efdc9634930c79276555a0e744b7e69abf5b1412ed84f2de6875fbc8324373a3
4d4bcf24ceef35e443f3e06ed8ca507826a2fc881e1e46a32c61891d4ed1ff5a
5a61df1ee75c90bbbebd7a59a9564598f8fc8208f6c1c186b37bcc71340818d9
2b5a98001c48889dcc356a641620ae8148e7dc8981dbf081d8a2a28859acd768
8a39fef5b6a1e4bbc1abe4c2b384c50b4e1ffbda18edf66f32a68e819e1d1b12
6a75ffc0f39f631b884b47e4740319fe98c31ed275e5a281c4e6683d7331cf57
ff8609d53541465155e8c60e413e3ca99b4007675acd92754cabbb3f5c745ce6
ae522cb7b43351a7562d98344b00d3a7c1c8dabc5720ed9cc2558a8d97d6c2c0
9fbdc83728ec53827814c904ad44908e4ca7496c5f333f1fb2bd9cc433c669ae
a2860819b43654073e08cf7ced1a8651a9730a4dd8ccef7ff7662647833d85d1
8c037af4579a5ee2d0e9c912a73a5b28fde9df9c520300a353ce54e59749c10d
028418bf0770c67726d3de8eaf749ee661f9e97cd94ad66b67943b9ca2def27f

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-05-14T21:11:49.783520+00:00
22103098622644634676223386237508614598180696363307
25702897135171719989204544258251584047260393360941
93942413814966884092090417556100441213403044409109
33584733592916364976698920098848593548712460110695
39473913560032015370077541220991324677708758371195
03210319722260099503486327356893039047914067654206
36208637408522627598584968548608843862665565283905
91542903933511651011919205444912856789666062938628
96404348676243764386113679427307673500007869899611
52821606589701502820057166836102968840931574848948
97642831797029141379851343750605151698311364815775
89878447861111573991546006109204510385518615562102
31283187019136965178673885567186042150456246996910
45771447491998535714051890807380642517297975306897
26327001835409089263464066140006422633963651991152
27920753892845217705244111291811407542971023789175
51015401951171103892975172612642896275528988872203
36380276415848494464469082563648788395945893399966
77766405730413179504714161879008598657209769896699
32598858555198781253676163031753689881812303220749
77452647488000280893338882377649521705681588529036
57042202076085391023898092609481362492148860346790
57872222486637646756684656102694002254816335258249
27323425923947821246792446284797871648910631646231
37628111050938147732678927771000277370540462707261
88739306222533624582647927948802639808237886645225
36078042805448743585810684313354089241888771385736
48982598466200084263487751867041152307845605872908
07876309299263077436322763503827696088687301276506
60491872243797701075793156204102802065953879772929

From the PIN diode (digits):

2026-05-14T21:05:07.381879+00:00
13785619366005705727641008737817248260995930277333
08198328306403693534424807243051084253363385810252
16241193821488178235449261137423458935654500142201
64799278670732591172831577683750409075565687136138
67897698556829216377436371138341824649633240490390
71313700489310931307362909102767046238389063916623
88860099165725477649373679247995518306739025148177
08144575308545792299485427752036247014263232733573
40385804120928495492944699640902439135718933281269
56076050345456079398793050914511448694731224220654
61816179775464249781003502126529931547733843256747
96454007644279579136321473559714738732724257873721
52708804532247407817977758291051236864101682811060
47621813374150765833523518956724290954904747731298
25875505158872198759721917816917910366891048943346
59889673847247483370586113335169909824018215042108
31903998815299626153747189017469510570936665513241
15912277965700975641849984502214955481951509318136
37812774474944713318431555012345250381110087356857
57475866905834049174548461156589232909044281377788
74858219296350524712213901856068835491912018320417
50671563777536536710802038623630307063449737297890
90973092448790892289698669523008939334792313520824
43905200287236575306002232742972372929626236897204
38578261879371947932971178312411506642295829271806
17925999273675711603255295301762299604611549873409
53657081859814656260695564070390461776718763921692
74824483805181678645525275006793888732569485384151
94925989554083302020047368444276677308955163317889
56965198057462340825805484076208242634816915107727

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