generate(rational(Options),Value) :-
member(positive,Options) ,
delete(Options,positive,NOptions) ,
random(0,2,R) ,
generate_rational_aux(positive,NOptions,R,Z,N) ,
Value = Z/N.
generate(rational(Options),Value) :-
member(negative,Options) ,
delete(Options,negative,NOptions) ,
random(0,2,R) ,
generate_rational_aux(negative,NOptions,R,Z,N) ,
Value = Z/N.
generate(rational(Options),Value) :-
random_member(Pol,[positive,negative]) ,
generate(rational([Pol|Options]),Value).