block MarkovChain //external function myrandom() returns a random real number in [0, 1] parameter Real x0 = 0; OutputReal x; Integer countdown; algorithm when initial() then x := x0; countdown := 0; elsewhen sample(0, 1) then if (countdown <= 0) then countdown := 1 + integer(floor(10*myrandom())); x := x - myrandom(); else countdown := countdown - 1; end if; end when; end MarkovChain;