For example,

The function could be something like def RandABCD(n, .25, .34, .25, .25):

Where n is the length of the string to be generated and the following numbers are the desired probabilities of A, B, C, D.

I would imagine this is quite simple, however i am having trouble creating a working program. Any help would be greatly appreciated.

## Best Solution

Here's the code to select a single weighted value. You should be able to take it from here. It uses bisect and random to accomplish the work.

Call it like this:

`WeightedABCD(.25, .34, .25, .25)`

.EDIT: Here is a version that works even if the weights don't add up to 1.0: