How about something like this?

[spoiler][code]“Test”

Include (-

[ I7_SOO_PAR oldval count; if (count <= 1) return count; return random(count); ];

[ I7_SOO_RAN oldval count v; if (count <= 1) return count;

v = oldval; while (v == oldval) v = random(count); return v; ];

[ I7_SOO_STI oldval count v; if (oldval) return oldval; return I7_SOO_PAR(oldval, count); ];

[ I7_SOO_CYC oldval count; oldval++; if (oldval > count) oldval = 1; return oldval; ];

[ I7_SOO_STOP oldval count; oldval++; if (oldval > count) oldval = count; return oldval; ];

[ I7_SOO_TAP oldval count tn rn c; if (count <= 1) return count; tn = count*(count+1)/2;

rn = random(tn); for (c=1:c<=count:c++) { rn = rn - c; if (rn<=0) return (count-c+1); } ];

[ I7_SOO_TRAN oldval count; if (oldval<count) return oldval+1;

return count + 1 + I7_SOO_RAN(oldval%(count+1), count); ];

[ I7_SOO_TPAR oldval count; if (oldval<count) return oldval+1;

return count + 1 + I7_SOO_PAR(oldval%(count+1), count); ];

Array I7_SOO_SHUF->32;

[ I7_SOO_SHU oldval count sd ct v i j s ssd scope cc base;

base = count+1;

v = oldval%base; oldval = oldval/base; ct = oldval%base; sd = oldval/base;

if (count > 32) return I7_SOO_PAR(oldval, count);

if (count <= 1) v = count;

else {

!print “^In v=”, v, " ct=", ct, " sd=", sd, “^”;

cc = base*base;*

scope = (MAX_POSITIVE_NUMBER-1)/cc;

!print "Scope = ", scope, “^”;

if (sd == 0) { sd = random(scope); ct=0; }

for (i=0:i<count:i++) I7_SOO_SHUF->i = i;

ssd = sd;

for (i=0:i<count-1:i++) {

j = (sd)%(count-i)+i; sd = (sd31973)+17; if (sd<0) sd=-sd;

s = I7_SOO_SHUF->j; I7_SOO_SHUF->j = I7_SOO_SHUF->i; I7_SOO_SHUF->i = s;

}

!for (i=0:i<count:i++) print I7_SOO_SHUF->i, " “; print “^”;

v = (I7_SOO_SHUF->ct)+1;

ct++; if (ct >= count) { ct = 0; ssd = 0; }

}

!print “Out v=”, v, " ct=”, ct, " ssd=", sd, “^”;

!print "Return ", v + ct*base + ssd*base*base, “^”;*

!print " [Base = ", base, " Oldval = ", oldval, " Count = ", count, " V = ", v, " CT = ", ct, " SSD = ", sd, " Return ", v + ctbase + ssd*base*base, "] ";

if (ct == 0) {

(+ finish state +) = true;

}

else {

(+ finish state +) = false;

}

return v + ct*base + ssd*base*base;

];

-) instead of “Say One Of” in “Printing.i6t”.

Finish state is a truth state that varies.

The Testing Room is A Room. The description of the testing room is “Number [one of]one[or]two[or]three[or]four[in random order][if finish state is true]. You have reached the end[end if].”.[/code][/spoiler]

Hope this helps.