generate(integer(Options),Value) :-
member(between(A,B),Options) ,
generate(between(A,B),Value).
generate(integer(Options),Value) :-
subset([small,positive,nozero],Options) ,
!,
random(1,128,Value).
generate(integer(Options),Value) :-
subset([small,positive],Options) ,
!,
random(0,128,Value).
generate(integer(Options),Value) :-
subset([small,negative],Options) ,
!,
random(-128,-1,Value).
generate(integer(Options),Value) :-
subset([positive,nozero],Options) ,
!,
random(1,20000,Value).
generate(integer(Options),Value) :-
member(positive,Options) ,
!,
random(0,20000,Value).
generate(integer(Options),Value) :-
member(negative,Options) ,
!,
random(-20000,-1,Value).
generate(integer(Options),Value) :-
member(small,Options) ,
!,
random(-64,64,Value).
generate(integer(_),Value) :-
random(-20000,20000,Value).