# Applesoft, 29 bytes A little "retrocomputing" example. Bear with me, I'm brand new at this. I gather that what is designated "input" may be treated as "given", and need not be byte-counted itself. In this case, I'm saying that the input is the value of the variable I$, which has been assigned "ABCD". X = INT ( RND (1) * 8): PRINT MID$ (I$,X / 2 + 1 + NOT X,1) The terms INT, RND, PRINT, MID$ and NOT are each encoded as single-byte tokens. First, X is assigned a random integer in the range 0 to 7. This is used to choose one of the characters from I$, according to X/2 + 1 + NOT X. Character-position value is taken as truncated division of X/2. NOT X adds 1 if X was zero, otherwise add 0. Results from X break down thus: A from 1 = 12.5% B from 0, 2, 3 = 37.5% C from 4, 5 = 25% D from 6, 7 = 25%