**scipy.stats.rv_discrete** is what you ned IMHO.

You can supply your probabilities via the values parameter and it's really easy and you will figure it out. Also, you can then use the **rvs()** method to generate random numbers when needed too.

You can also pass a keyword parameter to **numpy.random.choice(),**

Consider the following example:

numpy.random.choice(numpy.arange(1, 7), p=[0.35, 0.27, 0.35, 0.43, 0.1, 0.12]