<pre>
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 + (-1 + 4*myrandom());
  else
    countdown := countdown - 1;
  end if;
end when;
end MarkovChain;
</pre>