block MarkovChain
//external function myrandom() returns a random real number in [0, 1]
parameter Integer x0 = 0;
parameter Integer xmax = 100;
OutputInteger x;      // Connector
algorithm
when initial() then
x := x0;
elsewhen sample(0, 1) then
if (x < xmax)
then
     if (myrandom() >= 0.8)
     then
    x := x + 1;
     end if;
end if;
end when;
end MarkovChain;