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;