  I show how to construct Monte Carlo algorithms (programs), prove that they
are correct and document them. Complicated algorithms are build using a handful
of elementary methods. This construction process is transparently illustrated
using graphical representation in which complicated graphs consist of only
several elementary building blocks. In particular I discuss the equivalent
algorithms, that is different MC algorithms, with different arrangements of the
elementary building blocks, which generate the same final probability
distribution. I also show how to transform a given MC algorithm into another
equivalent one and discuss advantages of the various ``architectures''.

Computational Physics;Astrophysics;High Energy Physics - Phenomenology;Data Analysis, Statistics and Probability