# 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%