Here is the updated "easy" solution:
First go to lists and enter your 10 items in that list, call that list "listItems" (case sensitive)
Then create another predefined list called "Combinations" and enter all the possible combinations there, if you have no constraints, you would have 210 combinations (combin 4 of 10). If you need help with that you can use the macro here to create the combinations in Excel (
http://pastebin.com/8a4xndJi) Remove the ones that are constrained and then enter "," in between them
Your Combinations list should look like
1,2,3,4
1,2,3,5
1,2,3,6
1,2,3,7
1,2,3,8
1,2,3,9
Now create a constructed list and enter the following code:
Begin Unverified Perl
my $randNum=0;
my $tmpString = "";
my @tmpItems = ();
$randNum=SYSRAND(1,210);
$tmpString = LISTLABEL("Combinations",$randNum);
@tmpItems = split(',', $tmpString);
ADD("listItems",$tmpItems[0]);
ADD("listItems",$tmpItems[1]);
ADD("listItems",$tmpItems[2]);
ADD("listItems",$tmpItems[3]);
RANDOMIZE();
End Unverified
change the 210 above to whatever combinations were left after your removal of constrained lines.
use the constructed list in your question and you'll end up showing the 4 items from a random line in the combinations list.
Earlier suggestion:
I'd use merged variables to add a predefined rotation number to the respondents (you can also do sysrand as Paul suggested in a recent thread).
Then I'd define all my possible rotations (taking the constraints into account) in a parent list. Finally, I'd use the random notation to build a constructed list I want to use for the respondent.
I hope I could express it in these sentences :)
Important notice: I have realized that SYSRAND generates the same output for the same second in time... If two respondents reach this piece of code at the same time, they will end up with the same lists.