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-04-12T13:43:03.134803+00:00
0a4aa03732b708b55721887f9715b21b802c25bc3e07f60be75cef187123d91a
7ecca8db55b8d9f0deed9c60c103cc19baf2574ea9af6922d50d100e5df79f21
cbf92a6f665ab204cbb98e01267d55a89fed893be5883ca7bc386289dbeb90f5
6a4817a8c159997e0615b6e9751d07a028134afdd4832de6f989e1131afa993f
421bda5f06a9daa3743bbf2ac7198377bd7b385012d9e660ac23600da838970b
c0f6f9558fb34a0c263978df7599998269e0465ea70edc42c92f14d801eb0593
ad9010d0dd5ba7011a046597c70d95d8853bb5ec173aae1a8fe6643aabde81f1
ecf7bf224046623a07f56a554b56a136acba018b26145d9c5d8c509086e95d73
2ff73e9e9f8c52a35a3eaad5b661105c70c8e6eefa942b334a979550188cc4a3
54e921f8fcf9b5ea327cb0d5237d4f4c310727806f5ae9acf2217f1dadccfa18
ec99fec5d40043f984547c9ebe136ae3af6586f2d89d3ab36669139f63ac9ed6
bd3a2ef6214df3e0e5a57025ca095d3d8093aa17e441b44e9e7c938878222e6e
c42588b7a7037eebb4040aa6fea020737fb4bb863af59e309021e5cdf36db592
f9830465697dd62ff6ee58f735d8555cee7e4b7bc0f1c2518f56fce0ccc2f789
f79fd8c3d01e0bf7a7ec3450e5c41157092e616ea03cd1d1e9ce72c1d627db12
4c1b6236a9ca1b9f20c67d1ba5fc2e434195c38ead0ea01fac603df8132102b8
31e2d90ef8d422c9f937787c9d849324c819d44c709cc172e73193093dec177f
7351cc3b19d928bf8b6d4fb93f21cbb71e1e786e3a1243440a3a2f520d2e6ff2
8c95c6fd3d8996650409538491bd218bc0a811beca3ec90a5ccc50dca3eb49d8
0907a31efa11dc61e8ff715ed3ff35c4b2511b2df9b5c0829078a56390cd0bb2
30b80b985f0c9d8e2ac2521f7d643d66e767c5e791c38be9fa890c4a845d9694
eade98504e084cc8075723e6200364958b8fa602c5fb57d972add277df925d54
e41bb8c37812459b5068f56b69c3be25c44158d54e9556049c12caa028f30380
4ca0981e9b4cb123c3428e0e71cdcdb208f8023f5b6b7692824bb603c0352026
93487f11f486cbbb035d89f88e02e3beb240e37c43483445c2abf2536bfbd071
0194363c52e9abdb5b2a72ce5f28ba14f513b540a4edab9407b69e71731e6004
5c0a6b2a1d9c9e16644cadfaa3de0cebe03e7203f4b8efc9bde7da0024cc799d
535e2578c8518fb9f9fbf835b8536067f39cba3a2d227bad1502a7652d33bfc7
f374321fdc744263086a3163d5caaaa9090d3cab4aad7542951faa75e3db4e67
b1d99275caaa0a0c3ceeed492ee841a7dcf9727e7fa6d5e67f9c63c3d95a0842
f3d6e24aa4ce6061f4b9da6ba16d93e5fc4d4eca1d2c433b2b40a528d9652a04
e288a5a42bb869b6ae21f898157c291026cb2c7f6b5d12166bbb057c7b2a81d1

From the PIN diode (hex format):

2026-04-12T13:39:00.933980+00:00
ff9e2540aec6b6bd8ede670bed1c7c27f79dd3ba3b6531bdf2ac7f6a9d443185
0dc5b5fbe23edc3125b55fa026fad4a0eb809a5b579934efed3958ab93291d91
8f82d059d3f9c0a747af143ca28de424c718ec5629f230585724682c7b5885cb
9f312c679ca9f00dcd9d762dca60beda8761e4e559acde472041e0a48e26bbc6
79e5137bf2cbc586c54e925a3d937a6d13564005b6b884ac7655f8f08af148c7
869364561cf116bf9b895c61ce1b4d62fc5bd8bb271e0130b2dfe32e53c94ad5
8499522975c75d17e31eefb152e565156ac08989aea942cb3c5187b5df2c40b8
9b9e5be31c3a3ec5a72982d60e16056e760f652c8fb6f5654ced61a26e144c4c
167550ab60f79c2501a1956d9769ccc196143cfdb0dc6bf3f1fb961c22549ec7
57d0589a79335670217759b961acfddb1db76a5521b40798b3a0d122bd5e2408
641d14c3e9b88533398798fb40c6ee95577b995ce10dfbfad59a49118e0a16a6
741101133cfc3686dcd9ae2210838f194c32d008f7a13376e0e89b673b0830ec
64882316f455b67640ccf9958f5953862c48e41afecacb01b5e16faf3bc28d73
a783c8bfe8b3758d272995bae032bad19efd43135c02ec39075399234f355c9d
c7381721f8d123a52b31bdd1524256cb5b3317c196d9402485ee1e53489502b4
448af723890edf97bc00be03de514ca70c018f251cdbd3a4b70a71afcdfc70c9
68d040e674125d6449192f466bfc45256473e680f54ddc53aaef25127be15673
aee429540c50ee4c2934857e3e20e2019dae07536971583fe302295efd035df2
813d9cdf907e6ae040ff07bbcdb27b7e453801fd09f2d6f4201c65281b9507a2
d5847ea9cc88b7d9bd914e69f0ec99b445effedce81bcc56015fbef97b235093
8f0b4f5ee983580b2d06f5099f3aa1b3e62aa134b221b2f61e823518cbcbfe8c
41bc6532e7f520a44c35f91e73bbf36eb821bc29ae5a0fdffe618fa38f2fc993
e329e57269eddfe1678743dea64a190d22d93d533fa4c7967d028648bcacb63a
45068e865b3900da8eee9b1cdbdc64f00408daec99a6f4b96435fb4ed236409d
d8a23f13af9e13c4dc0f64e2740e4eee97312d27ea6880cc19587011d0ae5068
8ccd4309444b8a1b7dedd65f00743832fae3916c58b1ad4775839728d67d5446
11b5545e0af062e20f79652e54b218af36ff375d79ac18ce1f13c7c79be74a19
09ef1f6cb99b6eacb681e933f3a45b7352855dd964db65de475ada3b413b9446
840cb845569e923f304c6cf91886cf68cc60efcbc25d73fad43f7e1a16e16511
2640c770ef80e407012c984b9b5dc16e5dfe966b287ba58fc55ff610f0762988
a5efc4e913dcc68412f5a33f24ad536af365e14ac8fef7ebeafbcecf2821c45f
f8341fcdf8c8a486deedebbf0e09748382c7428b318ffbb00f84d617ca0f36c7

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-04-12T13:43:03.134803+00:00
10746055508308818733362751217827284437886207119224
13352626688584569693032586877869750534131614935933
42110290780485420138258568593759366067885698374406
72236893895326062182172907604019743145371926536366
27950669631659914299253119892356801896723596136856
51119285437974123857201753533005709467146647200105
47734416916701260401519913493359812358742643005871
29913464709858070685758661547286013938209356934080
44349315476258594082639062708297169212484351745149
80244096638433815024763525797649073928119072332729
73245397006732842458901906750134575879020519599972
58895846337765123709936128477023658078582447362034
46109637368367032680041066603215278087345858484433
09814631040105254788538592267523929481438694375995
30116752809617870946971060601493391876279854692759
32982527654667654995427314603172966119330284491434
55202457324736257612569314494709612327158159254091
39097985633383303020105818676810584782134611404998
61375001040983324589333992681790621092806373090763
30179713945396788127458192304420659944117848841152
95125742429482312500610203974595393712743293504852
80780876078735320300493943660297871473194693842784
95201869558004070595903796658878498604561860400328
76605230557677359566421413780802639107184630758203
92533238477227173487039337420290786424677252699471
83071301485460827191421495408620198164647148078258
13153096049210074229565822007673631262140384890036
21578394372081438553848396035686584534237321026701
45519199165031166699080649997069091360717473176649
31701778037746177010126073466567142627662756999590

From the PIN diode (digits):

2026-04-12T13:39:00.933980+00:00
58376474988289420311282439578659014989722706576849
33139781624937819560386028549187535257887147412945
43308992677175206062413699248641488887360444238833
59494403566913571845969035978972713265644238879821
19239734977846906147220919866405828432721885387299
34470086282291553792972777989187393001487846837432
53824117999323307782012106923737746966608135814464
84555891285862976741301422051018150144438201769762
10207676221780719656370161490951059350206076075028
34845899878854215186123319898597722983068533800752
79603489943608002920958433515735526498498723539213
54731742102266161701196054347434163143257650086151
18550359084800363522858218644943898334447226018111
75599441156731917917413941498650865867199202570783
53357953925799562333356543498982668691512393506436
33308372490280683835371451880090038176671201433728
64831013751204641618930073254770076937001528778370
37182386157441841280764152332662320157740783051388
63024194039329615644260664078778232669560109322801
40274907623226693683894578055380692786019590233580
47431179943188114506095958617942615278337830305324
40658801503264765330158710843388417490159743634347
47411405033567667425133461836364995025023472887282
58690642349157004255280004085366850053785464576263
19755819961500161478514945390428258812177480044067
09687538272595001656504508887773711731514025847017
81849410981521014684782475545593217224311999995574
25093108855510728229516491158233930001719059655948
70321284698658466348760824340496949315632626220117
38649912280701445275559393109350074023654397951618

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 | support | Alnwlsn 2026