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-04-26T17:19:07.464305+00:00
379f7425bf7d7424c3371aa4b0441747fa1dafa21b3eb83664484be643439692
a12b6100b70bf3ef4fc663e82a1bf1f007d868e2f0965577b52100f22aa9a9d1
7170578ea6d3d1873f97ca39b20535fabcbe0c78f081866b4a28a806a11695f4
1328de0ba2c54f3b96df38a648dbab74739df7b3c193bde3989532400ef56081
f020187e45fe1b46d578765125a5473b4a51966ded2460d76fbcc83c1f85048a
e54cd7f467749b6d534a521f0b47852740a40d841d9641d938d86bf5b1918a52
b01cfeec7ccb048ad05da8f3bc2271981d267a13e08c4053d390fd894c2285c3
2d68e9244fce4bacbb2555b061a055823521ba10db82058ba3307b7c2fe45328
c4060b0bc6226c603073e446381fcf7b8029e31cadf384b65d660e06a1869d14
38450cf30ce621058cda42f01567fcbf28e16bb50b8b7fe638ac190db6605068
d32ed50d221c134a5cab818e5148257393cd51ebd45aa760c88cd9aa46a01f71
63cd5d9df5ba9b32c0e244106b61437e5ea39eafbd52ffadbf0cb90197708aae
ff03fcbb9aa9c9dd2d9a8c33c88f958d6c8f70aa60445e5042f1e777dd1e7508
affdeb47719fa8e2ec75f6768e1ad4db9ba9d958f6af761f645fe0f6fa044257
774fa9aea20cfe16c6aa8e3120905c6f968a475b9203208b994fc40e532a1d6c
163926177efadd1382b42937080d7af495547747ec92d36550609ac9cd12520a
4a0f933c9d07a5159a095cc8ecd8c17ab2e98cd20cc0a31cde84a98b6f7391ee
94dd7e4759e3751ee6933db1b20660f27c8eed364d536f95d492df70b9ef19f1
d80019113ef7c179245dbead3b58dea2e3fae491fda5e47e421750c84e56011f
c4de53da9e2e7b7eeea2a0b1686451f19679c2e2c30263038eb825f0038811cc
ba1d9343b0bfcee2a10a83e298b65889bfcde4578396eec8e519c34e06a9488c
883e737aa80134f8731760fc89fd14e0207b526cd5692371288cc2b3c2f521fb
48f05d2b88b7498eb3c161071ba50fd4d05c7b15e7f9a57b9da7061e44d1eb73
dad879eb928ada0dc796deb3959cb31855983157e3e4a2dcfb93da582aa3886e
341d058ce4a28e68e13f62ed02ba9266abb7770bda16baa3745ac7785f135f90
051d57b3979a0aec3ef3bf963cbd1127903400b8ca75fef8d1e2199b95d0b33d
e306a11feaa8cf35c3494970c436e0e7034f9c2329c2064e12ee6d5e1cba657a
97b40daaea14bbe256d13b78abcb0ca742877cf6f579e97f459ce371a3c8eced
e3e22d579509bc842e1bd7c7b1ee6d8b53651e92056f7c5afc54e6caa70fae37
485e7f12cd49cea15d067e2c0c5c3d7453a7542e7452bd9ccc07b338b56422de
fa65096a321f0ac7dfdb032bb41722d12a6d1c275f6115f0654947cca292442b
4df1181c04786181f828c505bf1a2a8fbd2773537be2e39ce1ec031a229568ee

From the PIN diode (hex format):

2025-04-26T17:18:54.862367+00:00
0bac48211fc3994bf23601f8e5cc379ec051449377915d884f9f315c326f0c52
f018df953cc66d2cb5a9181b2b5977d132f000c6820695c28b0f626fb2e47dc1
27e09b40e95d43981777c7f4d7c8db402b62ec5d07eca938a48907a8f5f21476
b90bfefc61ebe8c08b1ea65e3788a749fe059c25d27e9289573452ef620e97bd
e231205520c835cabfb5d7a987977caafb12ba91449c3e4f0a33ef67fecb51f7
c6ceb9f8fdbba63a6031427df49daf91048c7dc608933ac156155721371beb5c
8a32d3a352df43a407bea2e1bac0ccadeb6e06d1ae96c28a9a08007753e952c6
53e6024b85e031b25e0e0bc0e52ff69537e979a5a2dab26648815e521903f733
24bec06672696415d566270d5353dec94e22f843cb4d95dc0a165f4d0c6fc680
84a9f35a83a8093693a951a232cb6c31f0377445a6fbbd0bb75fd19779352191
3fee48efc9477bdfc4906d6f7b89df0762e42abc29f944cb9970a72c12d6ad60
ff70a54a99a7c42fe2450379f3031ea9249b9b78d72d69149aba053b5af6a44f
26d9f426b6c3030745b9c77ae4d5b90ca3ab8da0b99703fa785b2c29e598efa8
8a85bb0a64bb234169c575b62f14a241cdd0d07cb90331b25474beb6ea16ae54
609480bd1866f149fddc6cd3b7b81000ac31d4f39e93178d592f64f11c91f165
955ef2d2e886075dd069fd19f972f23b03dfdb89bbbfb73967b6f5a5d37115dd
5ed4d7bd5f2f6b51ac49811a4eac1dce11dc9966f6ef70b51d38d6b301934e34
ff11f0d29e138dcb018b0a35fb01b515642860ca5d7b578c1d814d696b7e6d67
658340b73c06a96567f215220494877ba5376db6e0c0b1e1f74e085dab6e49bd
9faeca9a6d6e265b144bf26ddebe4fd82f0ae0117fedcf1b7858da7a1adcd8c2
2aa4ea5cb4204d8888ffe188b06bf0d82db6abe98df1eb3fd9ac955859ff95d9
4cd6b599f1074458cd9b7433637aa0633797d81579e73efd2bfa8b7398e0dbca
f50bf1edac649021307ad719fe775976923623a83e6af181270497e729a37936
4d3d8ab322189a23b49aa84698635f30d4c47996db87c0c33af8f24acbd57962
62b42c94836930985639c7f41a096ddbda7f783083aaeff19ac3f07ff8b31357
9451414fcd74021a43a6950b544afd1bb7deeb5dd018d03a3bf751d6ab62c82c
5a72b6e273998a810b64d4df8054106509ed0a25fafa6b3373c5beaecdb6c79d
05f01b68f9c7f701c93eaa10d5a81258b008c8f111bf4c35503dd033ebf25e6c
b05499f2143df7f8982a45935c50b38afcd9595a999ed745c2d75b0084f79055
d3609052c2484dc5eeddb8f87ce2200bb7f63098be1b3fc4618cee10b560a37a
5e2b17080187a04de3b00371b752f12695b5b7396696a9032f6e4f76c6b6f208
42e3330ad9b2dbded3a334d690c51a1e16d7da3284103b1f8edbdbd1da1afbbc

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-04-26T17:19:07.464305+00:00
55591637912516369555266476682371297562276284540072
75676750466143970083117998994227070450851981330042
69691312874266356351577805538890122029340774406806
61224919401162977959505666727116155779934789524950
64149629322426692770201881376571597481500936961188
60313304387603165509837482311171333964641332295065
56077745388276282404389368883413522938221940648344
37763433954504367975728737857697608530533386163005
39634823244783409606111198340896481570563123284128
73328293021406613457205669121233054066210391400781
11392756722513829680044613342819749271294281723715
47819067964070706031139993578655509268160797672694
63587589827391128501511238740387546945544051434941
08431270966894806619301708757113596817184226556988
75183100950466871979697462122298704249324492115038
71914603323953799614834229082257382326193080415508
13224984197146018096541882107415476057076521540992
93227840129263283269391115454826718917304761777806
96244254778311494612852500251762932136939073598862
45652666238078860131968358462326626077040081502194
95029903428437033617862947677691611031528288379187
31502595780669724036621522680152152396372032238208
05351340409479943372934336837342799397072765159223
21652357670630681521463813995079495679248552498762
47884263361052290540624204639802864602718319112286
63169099209519954405298779515410629150608917394452
00841725554979610661316853957373129654037956354194
06781809942886012251801370208786592071126766352421
27695613634587490988324627997709398301304605112490
84671574557294271873619306264412926116836784461682

From the PIN diode (digits):

2025-04-26T17:18:54.862367+00:00
11727233319553755401555892816847194593367959499250
11128224496098094481692427438919500098300649943915
98117825933955649367522319996443989307695664370768
20188511979239306694553667730556372646378752829814
51894932853253918169355124701886456856627910510381
98858766589649662557754504402598084758938621873355
27923850638267640790628692731006745094385408001983
82988302753349789414119247495521656278027229948225
03513690920214050021023913838378346777491022957712
11982832699031680954476981625008495516696689118395
51215333456372712396440911233707984288416853126744
18739612657453679647690321033069365555204505205486
05599064793838829503076985992285126371416085510320
91444152683833871000873565059717824720626524850349
78841690822274849648288924027308838416007249584723
41894700284501499434079305251459033787918357038265
13219489954707817273292678722917530212812956790147
78521758194101391053018121004096932387402929770507
26090301316483600669010321340448352365550982927778
08937110738959745409103891207509907947101727272088
22269442649280327736363676074582714163724988894976
81530768885516519922609955512121624339155211720044
33482225198918465435686206293904514163215477613879
34245435805468705299954896215035929558742198988044
48310548528657992609092720483170549527791987488165
79160226676649118474278393245859817198449014821553
38291100288416010910370751159790748299570527049901
62701668188876081791765380615194087684532061524269
47928079388990535869949100324485964482947277978424
32118348529027639697401681966322944323080135607776

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