And then someone wanted
three items scrambled... At first I didn't think it was possible but
eventually I figured out all the weird multiscrambling laws again and after a
three or four tries nailed it. Basically what we need is three scrambles, one with dollars around the first and third items, one with dollars around the last two and one with dollars around the
first two -- I tried other combinations and maybe there's a solution but I
didn't twig to it till I tried that combination. Again I use an extra dummy iteration 2 dollars at the start to cancel an iteration 2 dollars that has to be in
first of every group of three items and another at the end to match the last iteration 2 dollars that moves with the items.
This is because in a multiscramble like this individual dollars have to be in
ascending order otherwise they get orphaned by scramble when there's no
semicolon after them. The item file itself:
<vm desktop> f30 <cr> <mss 1,1> <mss 2,1> <mss 3,1> F10
<ms# 1>
<ms# 2> <ms# 3>
0 "instructions";
<ms# 3> <ms# 2> <ms# 2> <ms# 1>
<ms# 1> <ms# 2> <ms# 3> +101 * "target" /; <ms# 1>
<ms# 2> +102 * "target" /;
<ms# 1> <ms# 3> +103 * "target" /; <ms# 1>
<ms# 1> <ms# 2> <ms# 3> +201 * "target" /; <ms# 1>
<ms# 2> +202 * "target" /;
<ms# 1> <ms# 3> +203 * "target" /; <ms# 1>
<ms# 1> <ms# 2> <ms# 3> +301 * "target" /; <ms# 1>
<ms# 2> +302 * "target" /;
<ms# 1> <ms# 3> +303 * "target" /; <ms# 1>
<ms# 1> <ms# 2> <ms# 3> +401 * "target" /; <ms# 1>
<ms# 2> +402 * "target" /;
<ms# 1> <ms# 3> +403 * "target" /; <ms# 1>
Ideally what you'd want is something
more like the following, however that last
<ms# 2>
in bold will be snipped in the first multiscramble between the underlined
<ms# 1>
before it and the <ms#
1> in item 201 (strike through text isn't
there, it's only for demonstration).
...
0 "instructions";
<ms# 3> <ms# 2>
<ms# 2> <ms# 1>
<ms# 1>
<ms# 2>
<ms# 3> +101 * "target" /; <ms# 1>
<ms# 2> +102 * "target" /;
<ms# 1> <ms# 3> +103 * "target" /;
<ms# 1>
<ms# 2>
<ms# 1> <ms# 2> <ms# 3> +201 * "target" /; <ms# 1>
...
So you have to put the two <ms# 1> keywords before the <ms# 2> and then you have to have an extra <ms# 2> at the start to cancel the extra one you've just added, straight forward no?
This is multiscramble1.itm:
<vm desktop> f30 <cr> S1 <mss 2,1> <mss 3,1> F10
$ <ms# 2> <ms# 3>
0 "{instructions";
<ms# 3> <ms# 2> <ms# 2> $
$ <ms# 2> <ms# 3> +101 * "{target" /; $
<ms# 2> +102 * "{target" /;
$ <ms# 3> +103 * "{target" /; $
$ <ms# 2> <ms# 3> +201 * "{target" /; $
<ms# 2> +202 * "{target" /;
$ <ms# 3> +203 * "{target" /; $
$ <ms# 2> <ms# 3> +301 * "{target" /; $
<ms# 2> +302 * "{target" /;
$ <ms# 3> +303 * "{target" /; $
$ <ms# 2> <ms# 3> +401 * "{target" /; $
<ms# 2> +402 * "{target" /;
$ <ms# 3> +403 * "{target" /; $
$ <ms# 2> <ms# 2> <ms# 3>
0 "{The end" l;
<ms# 3> <ms# 2> $
This is multiscramble2.itm:
<vm desktop> f30 <cr> S1 <mss 3,1>
F10
$ <ms# 3>
0 "{instructions";
<ms# 3> $ $
$ <ms# 3> +101 * "{target" /;
$ +402 * "{target" /;
<ms# 3> +103 * "{target" /;
$ <ms# 3> +201 * "{target" /;
$ +202 * "{target" /;
<ms# 3> +203 * "{target" /;
$ <ms# 3> +301 * "{target" /;
$ +302 * "{target" /;
<ms# 3> +303 * "{target" /;
$ <ms# 3> +401 * "{target" /;
$ +102 * "{target" /;
<ms# 3> +403 * "{target" /;
$ $ <ms# 3>
0 "{The end" l;
<ms# 3> $
This is multiscramble3.itm:
<vm desktop> f30 <cr> S1 F10
$
0 "{instructions";
$
$ +401 * "{target" /;
+402 * "{target" /;
$ +103 * "{target" /;
$ +201 * "{target" /;
+202 * "{target" /;
$ +203 * "{target" /;
$ +101 * "{target" /;
+302 * "{target" /;
$ +303 * "{target" /;
$ +301 * "{target" /;
+102 * "{target" /;
$ +403 * "{target" /;
$
0 "{The end" l;
$
The finished result (scrambled.itm):
<vm desktop> f30 <cr> S1 F10
0 "{instructions";
+401 * "{target" /;
+402 * "{target" /;
+403 * "{target" /;
+201 * "{target" /;
+202 * "{target" /;
+303 * "{target" /;
+101 * "{target" /;
+302 * "{target" /;
+103 * "{target" /;
+301 * "{target" /;
+102 * "{target" /;
+203 * "{target" /;
0 "{The end" l;
And then just to test whether I had in
fact figured out the key rule (that the
<ms#>
keywords had to be in ascending order at the start of the items) I went ahead an
tried a four way scramble and it hardly took any time to get right. Here with
each multiscramble iteration it scrambles the item number of that iteration
locking the others in place. A good bit of rearranging of
<ms#>
keywords was needed to get them in ascending order versus where one would place
them at the end of items but it works, you do need an couple of extra
<ms#>
keywords at the start an end with the scrambling done this way but hey, it's
science now and not voodoo.
<vm desktop> f30 <cr> <mss 1,1> <mss 2,1>
<mss 3,1> <mss 4,1> F10
<ms# 1> <ms# 2> <ms# 3> <ms# 4>
0 "instructions";
<ms# 4> <ms# 3> <ms# 3> <ms# 2> <ms# 2> <ms# 1>
<ms# 2> <ms# 2> <ms# 3> <ms# 3> <ms# 4> +101 * "target" /;
<ms# 1> <ms# 2> +102 * "target" /;
<ms# 2> <ms# 3> +103 * "target" /;
<ms# 3> <ms# 4> +104 * "target" /; <ms# 1>
<ms# 2> <ms# 2> <ms# 3> <ms# 3> <ms# 4> +201 * "target" /;
<ms# 1> <ms# 2> +202 * "target" /;
<ms# 2> <ms# 3> +203 * "target" /;
<ms# 3> <ms# 4> +204 * "target" /; <ms# 1>
<ms# 2> <ms# 2> <ms# 3> <ms# 3> <ms# 4> +301 * "target" /;
<ms# 1> <ms# 2> +302 * "target" /;
<ms# 2> <ms# 3> +303 * "target" /;
<ms# 3> <ms# 4> +304 * "target" /; <ms# 1>
<ms# 2> <ms# 2> <ms# 3> <ms# 3> <ms# 4> +401 * "target" /;
<ms# 1> <ms# 2> +402 * "target" /;
<ms# 2> <ms# 3> +403 * "target" /;
<ms# 3> <ms# 4> +404 * "target" /; <ms# 1>
<ms# 1> <ms# 2> <ms# 2> <ms# 3> <ms# 3> <ms# 4>
0 "The end" l;
<ms# 4> <ms# 3> <ms# 2> <ms# 1>
Suffice it to say that if anyone besides me ever designs a multi-scrambling item file I'll be impressed. But it's still a useful tool for me to design solutions to people's odd scrambling needs.
A more straight forward solution
And just when I'd concluded all
multiscrambling was tumor inducing along comes something that turns out to be straight forward. The request:
The basic setup of the experiment is as follows: first there is a test block;
then a training block; then a test block. The test blocks together will
comprise 36 items, of two distinct classes; I would like a way to randomly
select 9 items from each class out of the 36 to go in Test Block 1, and leave
the other 9+9 items in Test Block 2. However, I want the training block to be
in a fixed position between these two test blocks. Is there a way to accomplish
this?
Basic item file will have this structure:
f60 <vm desktop>
0 "Instructions";
+1 "Nine class 1 test items";
+2 "Nine class 2 test items";
+3 "Training items";
+1 "Nine more class 1 test items";
+2 "Nine more class 2 test items";
0 "End";
So the first time through we're only
going to scramble the class 1 test items, everything else gets locked with
dollars (or in a multiscramble, <ms#> keywords):
f60 <vm desktop> <mss 1,1>
<ms# 1>
0 "Instructions"; <ms# 1>
+1 "Nine class 1 test items";
<ms# 1>
+2 "Nine class 2 test items";
+3 "Training items"; <ms# 1>
+1 "Nine more class 1 test items";
<ms# 1>
+2 "Nine more class 2 test items";
0 "End"; <ms# 1>
Then we're only going to scramble the
class 2 test items:
f60 <vm desktop> <mss 1,1> <mss 2,1>
<ms# 1> <ms# 2>
0 "Instructions"; <ms# 1>
+1 "Nine class 1 test items";
<ms# 1> <ms# 2>
+2 "Nine class 2 test items";
<ms# 2>
+3 "Training items"; <ms# 1>
+1 "Nine more class 1 test items";
<ms# 1> <ms# 2>
+2 "Nine more class 2 test items";
<ms# 2>
0 "End"; <ms# 2> <ms# 1>
Lastly we'll scramble the three sets of
items one after the other. This is the actual item file structure you'd use (the
others are just for show and tell):
f60 <vm desktop> <mss 1,1> <mss 2,1> <mss 3,1>
<ms# 1> <ms# 2> <ms# 3>
0 "Instructions"; <ms# 3> <ms# 1>
+1 "Nine class 1 test items";
<ms# 1> <ms# 2>
+2 "Nine class 2 test items";
<ms# 2> <ms\ 3>
+3 "Training items"; <ms\ 3> <ms# 1>
+1 "Nine more class 1 test items";
<ms# 1> <ms# 2>
+2 "Nine more class 2 test items";
<ms# 2> <ms# 3>
0 "End"; <ms# 3> <ms# 2> <ms# 1>
Pretty easy really, no sets of
cancelling dollars needed or any real trauma at all. Didn't think that ever
happened with multiscrambling.
DMDX Index.