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-19T15:02:10.454398+00:00
6c28b787a3c79237221ddcc3f94baa4ba12eece5d6ef5c2ab5e5739d0561d500
42e90645f46694bd948afddd052c577d42f1343f8c5c9600774fdb4bac53f7ff
44a0fb6ef6a47ba7adf25a5e46ed1d2caaf33cc0ceae8824e0c505a4f5dfc9a9
fde7f633c1c35fc68cc5d66d600d25129b8b37a6b1dcc0d792175f52478b9c7a
cd7a9e8441bd76eaab7cf95b09cd0d19ffd1d324aee0017755241a211291cdde
f5317d54a2b558155d7924d7c3b7c0403ccf3bee989cfafec9cc6a4e962207be
3a20d3113920f6842e9a051ed2d3098b67469136177641e0b88fcedd2af1fafe
178e7b116d7b68288091cd97af34706de1e086874e12414b847a914fc3f4cbf0
ca130bad1e9f3fdf11c06fe084c137f17be45b6b2b49ca27af3b5241e6b5c729
0605f753986d2a7622afc094745121db3180fef3abc40aa94cf4758c555fb7f0
85541eaa8c2e31108e45d2236d55f701f99338ee2731ea1d32547406388efff0
d327777564629176b86514288e5b5b35858a69634ab6f9d236f85d124cad65a4
a891d0582301d8b4c8ab8767f97dfc33951255615f25daa50406caca6fa10bc0
1f9d3a7bb506ab7cfebeb8f12d8c9bebb73e6ef3f83b8eed15d4e57816e63c5a
1bd9a0c5a6b68dfe3de55b575deb1a380382ed2b34b2045b664dff8ff8afc821
8d6ed03dd931d82b6a533f0c3e0190c94ac35e1fd21adef6c4d313f150315b1f
e3015c6209c5b44d8b25787ca57f27500909d5730e618e5d866c15a5387966cf
0790a968de2d0fb5a010bbe7a01946c59a8961094447098499ad2599dd64893a
23cab3abbd5b5e02ff0ea309b886ed5b8e9e1f6cf78665904afef10ffafa4233
edbd283c1ba5cb6a312c636d071df43db65d25a8f233ccde945b86d850305ec4
e0c1a2b28eb6fff6d51d60153e5ba8b0eb1a5d2db8c7a859000c5a2371256e31
87faa8ab750719dd8c430516e8e774b3bdd9632f31615894b325d35be67c326c
2a320bcf907394a0d4d30d1b5700778e909238654baa48a18767f7ca351c9b1f
c14e1b337febbc376ff1cbad80cc33f19cc2ee5b4cb6e765b423926239704c35
877f18acc204cf6f57752c0065b76c8817397d4444117e27592f09cf5a244252
667e555ff438ba60ff102c578f9154af09aae290c9e5392ac4faf22bcbb2826c
2cb71e25dd7f5f497672df75b0f9883bf289c9572a5c403575415a11596770c1
6928066c340d1609f17f9be0de0c2d2ae6771851a6ef83626e659890437db27f
9177fa2153ccf750155f2a5b17f1e26ef0190b6b017cfa76d4df4373740a4f23
e020bcdf1a5497e9208377ed52798484347daa6d49330fab83c6a90399d05b7c
17b8d5b2f9dcfc7b51da9b6b34dded6f60299737e2067457fec8369f98dc6903
9422674db56badcfe3ff14ceeebd70472e06be94496ea808234cdc98c6d68eb7

From the PIN diode (hex format):

2026-04-19T15:00:27.053756+00:00
1f40fc795d0f267a1f8e646cc8737041608c4b4f2e7ef68c73ebcbad54d1fe02
d5734adcd46a967ec87386f63cfbcda0a404a177f5771601225e1e541fccd62d
b3a7d218bbeff6eeed730b8a7f76ee2ef864dcddd53f56ef1c2cdae6a347f7c5
f47e30f8d8c6f301dc67a328f8be18bb3e91a1874369e30bd7d7381e11215cb1
0bb4e01c028d604fbecce544e663e19c80b012f56e8c763b8e4a8200a64e0bf3
7fd3a8de1ed8a3357fa741975f83787a90a341bb81683fb99870fb6e49ab515c
365e75d08a39830cd360f53e3c541f19a7dc481301021467fda4e25acccaf5fe
724f93b4efaf54e4d6beea1d8ee611618bea34535822cb0aadc1bc3afcc41413
8e3dacc56f8bef7e98581a904f7338ed63f9d689b259236afdf3537db55fbab7
c5cb700ac255edbffd6a6bb71f042ddd37760a3b60d761428b1f2b62a33e7944
50fa9d5e28c398eb36499e81e8f619f7b54b2413cd637695fba28a66f6751e90
0ba2aa2bb784ec3012edc1bca4cf84e655764c0e97aa8e4737e65b501cc838bd
5220a297ce17da0144f2565ec02ad1770508eef3838a3c081cf35523768cf559
8cd6558b41776337e5105bd33d761a0fee994db00febfed413e1d35e277e84e6
fef8279e1ab2d072b26369a984baffb7bf1f652dfc1f5c8edfce93602f587ad8
8f020e7e88442184a3627b904b70f3564bbfccd3c2cfb6592db7990e026b6aea
1ac82b7ffec21e5a96fa90d0df4e20bd9e973625d77889878c025e6068b48a31
e3623d6a19afc57ddda247006e088cc0a819deb56141aa543f23337bce04d375
1764f89e93f10fde4f24bbca04bb3892a76240ff682f9abdf942e0bf689e6b5b
02e9e9a5d2a1378217a080dc15713345da34882dc25bdc139f0c67bec34715a2
a54c30b7ef3a56747b33d84c1e7911d3e8e548ba81b348ad88ea177924f538d9
ef3042bc3c8b619fc2237ef44b1008e2c2416c889e7be63f964c91bfa6703dce
c96cdd186020cd84fb357153a6ffac8b9f9c7350ec5e6e9284e4a8b5a6d73b29
fcfa9f8147d7f1f37935adfaadb0ed92dd4bd406c26df11e072d9113ff3c9dd3
63de5e729dcaec0de67d79463b76a6b50ee9c192e43d7d4e25167721e5ce50fa
7c03ecbed848088562fc4c7ba527a21538015b2ad6e784ab7d1a5410a0c13c08
b856a67058ce27fe7ef95a3d23fd9b64fea86e873700e0fe107e993dd2b2f455
593cabae9c17ac3d6c2fb382995a3ef0d5f4d99ec689b5ec7d716bb6099b8829
4ce16712985a8492e3fd8a257d57875b7d2218fea64a01e3e8ef14e27486df0e
8b6bc810d954f265383fdd2aac0a6c002f4e3abbe1c2f8b50ab9c48fa1f72aa4
c5e4c6d58f6b0bd5cc287a086cfcbc72027560bb4eab1cb8fe9e5cf2bdc0db0b
004628346a1997609526629d13044507ae5f390613200c3bd3e3f0579c79d4f0

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-19T15:02:10.454398+00:00
08408335639946553429957570756146924281155705970066
06690248894838054487256652634092500019797572836860
10642367739094702944706092743636970564695193959598
40970996133718553955667792462395827139562222583265
89187124910913253674011985362633184549258462818821
93213695839264605952560678503407905832175732324654
05300939037045542318658443422342231709230440284551
75521209343578186575322245799519117330596317921132
93552391074373397559826581994106058352094218347592
48168133492871961069761740859583338430704046491642
69350985014756394929508416065642391917009845188401
20404291915333380599748254931876730164684588350180
71350325514918859795376504061161119231575823810671
24908445405583621059422120226090276097668241619187
93265603304352780491027743753341106149430683631262
01447495943126961980499131019298099780773937202465
27398009091514974293340821655621020744690445158160
16876025709754379709687109325373375300375835797189
91940214630984349142583108340144741566518940602765
06494499090729618293376851489134804894969362784282
29962162916876269345849968890012903513371049356871
17072540670522167989994749978848793791245008425011
44154860132787001942444656017570726135035328553193
78275127885511732851569491768201803546985712765335
27247294041187174400018308362357256868172639894709
90366682022685955686961644874345847509704457429643
78300844833037279573181417763659378742926453176590
17890312930540060852132209275512454219248166319810
01524467257827451933838021954291231025110701241867
15161079353288268451323119822132325225700973511571

From the PIN diode (digits):

2026-04-19T15:00:27.053756+00:00
31642193153822314200081512659640757946264015738402
15740650261534606064046119192201349430843145796724
87151138271846006386284463719726489801036340902487
62456135670511563017339277118028024196799068995628
76181040185942743000667811276830635327676551953120
22446365872904638552121073718192549417385731129662
60843125677219010220036490147947807584902942179739
52838834107393885896201942617297113926528826447915
56993778893506832581958683971210948591060783310445
55181059969766393143986362216880579440955254735829
25817536199918496238021730441162704383324818938864
32851876145170427155918028568982326251230168869492
42190508313860082885351840894085396519995516916118
26155377761519943926323958267814789905693286839131
01453192424796478822430214263668333263982344751286
75919482894583531402070626432794309050447832895851
54372037354002949604803849986106257597256271001008
40926825819765708463355123041723005847157936870487
56466798640447548966910458079102656155302360282113
51695236459491195912039095712162657648835886162351
76302117728629797273362321365648668860399759943526
75160894650836582363507645916612610824963232531383
66723959561580941046326881665941592971215373737646
75069409300745451960579994145713252170591866811493
46612578372219338024039072083398762365396221560191
42327125268416609360088486661288392690613555006810
35550016265361788589607174562372610847793053906258
98378125130782095536417603185290324638372587359125
34246674012016341439071684015663427210080047785887
94811085964361426497984307114022080888140217968778

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