Previously I've done things like populated and array with 1xA, 1xB, 1xC, 2xD, 5xE and then I've randomised a number from 1 to 10 and picked an array slot. That works fine, but if I want to use decimal places for my % chance then I'd have to make an array 1000+ or more slots long which is silly.
Is it? Modern PCs have tons of RAM -- you might as well use it. I don't believe for a second that you really need to account for nths of a percent in the context of a videogame deciding whether to give someone a lemon or a melon though. :D What you were already doing -- do that.