Wouldn't it be easy to just randomly choose a prefix from a cache ?
Putting the probabilities aside, it's easy to deterministically generate all possible prefixes, and to classify them into weight categories.
With all prefixes separated by weight it's also easy to randomly choose one, given a weight.