http://setosa.io/blog/2014/07/26/markov-chains/