In [2]:
import numpy as np
from numpy.random import randint

In [3]:
class GameOfDice:
    def __init__(self, nsides=6, nthrows=1, ntrials=1000, conditions=None):
        self._nsides = nsides
        self._nthrows = nthrows
        self._ntrials = ntrials
        self._conditions = conditions
        
    def play(self):
        result = np.zeros(self._ntrials)
        for i in range(self._ntrials):
            t = randint(1, self._nsides+1, size=self._nthrows)
            for cond in self._conditions:
                if eval(cond):
                    result[i] = 1
        return result

In [27]:
g = GameOfDice(nsides=6,
               nthrows=3,
               ntrials = 1000000,
               conditions=["sum(t) == 11"])
result = g.play()
print np.mean(result)


0.124718

In [ ]: