This post is a little tutorial on how to use PyMC to sample points uniformly at random from a convex body. This computational challenge says: if you have a magic box which will tell you yes/no when you ask, “Is this point (in *n*-dimensions) in the convex set *S”*, can you come up with a random point which is nearly uniformly distributed over *S*?

MCMC has been the main approach to solving this problem, and it has been a great success for the polynomial-time dogma, starting with the work of Dyer, Frieze, and Kannan which established the running-time upper bound of . The idea is this: you start with some point in *S* and try to move to a new, nearby point randomly. “Randomly how?”, you wonder. That is the art. Continue reading