# From the Bernoulli Factory to a Dice Enterprise via Perfect Sampling of Markov Chains

Given a p-coin that lands heads with unknown probability p, we wish to produce an f(p)-coin for a given function f: (0,1) → (0,1). This problem is commonly known as the Bernoulli Factory and results on its solvability and complexity have been obtained in <cit.>. Nevertheless, generic ways to design a practical Bernoulli Factory for a given function f exist only in a few special cases. We present a constructive way to build an efficient Bernoulli Factory when f(p) is a rational function with coefficients in R. Moreover, we extend the Bernoulli Factory problem to a more general setting where we have access to an m-sided die and we wish to roll a v-sided one; i.e., we consider rational functions f: Δ^m-1→Δ^v-1 between open probability simplices. Our construction consists of rephrasing the original problem as simulating from the stationary distribution of a certain class of Markov chains - a task that we show can be achieved using perfect simulation techniques with the original m-sided die as the only source of randomness. In the Bernoulli Factory case, the number of tosses needed by the algorithm has exponential tails and its expected value can be bounded uniformly in p. En route to optimizing the algorithm we show a fact of independent interest: every finite, integer valued, random variable will eventually become log-concave after convolving with enough Bernoulli trials.

READ FULL TEXT