1 2 3 4 5 6 7 8 9 10 11 12
from random import random probs = [(0.25, 0), (0.25, 3), (0.3, 1), (0.2, 2)] def f(): r = random() for prob, x in probs: if r < prob: return x r -= prob assert False for _ in xrange(30): print f()
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
0 3 1 1 1 2 3 1 0 0 2 3 0 3 0 0 3 2 3 2 1 2 2 0 2 3 3 3 2 1