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 = basebase;
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 + ctbase + ssdbasebase, “^”;
!print " [Base = ", base, " Oldval = ", oldval, " Count = ", count, " V = ", v, " CT = ", ct, " SSD = ", sd, " Return ", v + ctbase + ssdbasebase, "] ";
if (ct == 0) {
(+ finish state +) = true;
}
else {
(+ finish state +) = false;
}
return v + ctbase + ssdbase*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.