It seems correct since you are using a uniform random variable with independent draws the probability for each number will be 1/n (n=100).
You can easily verify your algorithm by running it say 1000 time and see the frequency for each letter.
Another algorithm you might consider is to generate an array with your letters given the frequency you want for each letter and only generate a single random number which is the index in the array
It will be less efficient in memory but should perform better
Edit:
To respond to @Joel Cornett comment, an example will be very similar to @jurgenreza but more memory efficient
import random
data_list = ['A'] + ['B'] + ['C'] * 18
random.choice(data_list )