Millisecond Forums

Pseudo-randomization

https://forums.millisecond.com/Topic14588.aspx

By helenr - 10/13/2014

Hi !

I was wondering how I can present the following trials so that trialtype'1' (for e.g. right100_win1) is not consecutively followed by another trialtype1 (so an acceptable sequence could be 'right100_win1, right100_win4, right50_win1')

Thanks for your help :-)


<block main_exp>
/trials = [1-60,62-121=noreplacenorepeat (
right100_win1,right100_win1, left100_win1,left100_win1,right50_win1,left50_win1, right50_lose1, left50_lose1, right0_lose1,right0_lose1,left0_lose1,left0_lose1,
right100_win2,right100_win2, left100_win2,left100_win2, right50_win2, left50_win2, right50_lose2, left50_lose2,right0_lose2,right0_lose2,left0_lose2,left0_lose2,
right100_win3,right100_win2, left100_win3,left100_win2, right50_win3, left50_win2, right50_lose3, left50_lose3,right0_lose3,right0_lose3,left0_lose3,left0_lose3,
right100_win4,right100_win4, left100_win4,left100_win4, right50_win4, left50_win4, right50_lose4, left50_lose4,right0_lose4,right0_lose4,left0_lose4,left0_lose4,
right100_win5,right100_win5, left100_win5,left100_win5, right50_win5, left50_win5, right50_lose5, left50_lose5,right0_lose5,right0_lose5,left0_lose5,left0_lose5,
right100_win6,right100_win6, left100_win2,left100_win6, right50_win6, left50_win6, right50_lose6, left50_lose6,right0_lose6,right0_lose6,left0_lose6,left0_lose6,
right100_win7,right100_win7, left100_win7,left100_win7, right50_win7, left50_win7, right50_lose7, left50_lose7,right0_lose7,right0_lose7,left0_lose7,left0_lose7,
right100_win8,right100_win8, left100_win8,left100_win8, right50_win8, left50_win8, right50_lose8, left50_lose8,right0_lose8,right0_lose8,left0_lose8,left0_lose8,
right100_win9,right100_win9, left100_win9,left100_win9, right50_win9, left50_win9, right50_lose9, left50_lose9,right0_lose9,right0_lose9,left0_lose9,left0_lose9,
right100_win10,right100_win10, left100_win10,left100_win10, right50_win10, left50_win10, right50_lose10, left50_lose10,right0_lose10,right0_lose10,left0_lose10,left0_lose10)
; 61 = rest1]

By Dave - 10/13/2014

That's not going to be easy if at all possible. My first intuition is that you'll have to use a set of <list>s to do the trial selection. Encode the trialtypes in one main <list> numerically. Place constraints on that list's selection as needed (e.g. using /maxrunsize).

Have another <list> linked to the above that contains the actual trial objects. Then do:

<block myblock>
/ trials = [1-9=list.triallist]
</block>

<list typelist>
/ items = (1,1,1,2,2,2,3,3,3)
/ maxrunsize = 1
</list>

<list triallist>
/ items = (trial.x_a,trial.y_a,trial.z_a,trial.x_b,trial.y_b,trial.z_b,trial.x_c,trial.y_c,trial.z_c)
/ selectionmode = list.typelist.nextindex
</list>

<trial x_a>
/ trialduration = 50
/ validresponse = (0)
</trial>

<trial x_b>
/ trialduration = 50
/ validresponse = (0)
</trial>

<trial x_c>
/ trialduration = 50
/ validresponse = (0)
</trial>

<trial y_a>
/ trialduration = 50
/ validresponse = (0)
</trial>

<trial y_b>
/ trialduration = 50
/ validresponse = (0)
</trial>

<trial y_c>
/ trialduration = 50
/ validresponse = (0)
</trial>

<trial z_a>
/ trialduration = 50
/ validresponse = (0)
</trial>

<trial z_b>
/ trialduration = 50
/ validresponse = (0)
</trial>

<trial z_c>
/ trialduration = 50
/ validresponse = (0)
</trial>