The RndUniN type is a unique random type, because you can also use it inside transactions. The advantage of using the RndUniN random type within a transaction rather than in the random variables section is that you can specify variable boundaries for the random values instead of constant boundaries.
RndFunc = "RndUniN" "(" Expr ".." Expr ")".dcltrans
transaction TMain
var
I, j: number init -2;
begin
I := RndUniN(j..j*I); /* RndUniN(-2..4) */
end TMain;