block MarkovChain
//external function myrandom() returns a random real number in [0, 1]
parameter Real x0 = 1;
OutputReal x;
algorithm
when initial() then
x := x0;
elsewhen sample(0, 1) then
if (myrandom() <= 0.7)
then
    if (myrandom() <= 0.9)
    then
     x := 1.1*x;   
    else
     x := 0.9*x; 
     end if;
else
   x := 0.73*x; 
end if;
end when;
end MarkovChain;