Pseudorandomization/no more than 3 times same orientation per display
Hi all,
By using Open Sesame I have come a long way in creating an experiment, but now I'm stuck at a more difficult part.
For my experiment I have created a display with a central fixation dot, and around it 8 rectangles each with a random choice between certain orientations, as seen below. After this display, the subject will see the same display, but a 'target' rectangle in 50% changes its orientation by 90 degrees.
So far I have been able to implement these elements in my experiment, but the point where I am stuck is this: As I don't want to make it too easy for the subject to tell whether the target rectangle has changed its orientation, I want to prevent more than three rectangles having the same orientation per display. For example, this would be possible if 3 of the distractor rectangles had an orientation of 90 degrees, and the target rectangle switched from 0 to 90 degrees at the second display.
I am not sure how to implement this in Open Sesame. Also I am not very familiar with pseudorandomization, if this is the way of achieving my goal.
Any help or guidance would be greatly appreciated!
Barend
orientations_list = [0, 45, 90, 135, 0, 45, 90, 135, 0, 45, 90, 135,]
random.shuffle(orientations_list)
target_rectangle = visual.Rect(win, width=30, height=90, pos=(xy_list[0]), fillColor=color_list[0], ori=orientations_list[0])
target_rectangle.draw()
distractor_rectangle1 = visual.Rect(win, width=30, height=90, pos=(xy_list[1]), fillColor=color_list[1], ori=orientations_list[1])
distractor_rectangle1.draw()
distractor_rectangle2 = visual.Rect(win, width=30, height=90, pos=(xy_list[2]), fillColor=color_list[2], ori=orientations_list[2])
distractor_rectangle2.draw()
distractor_rectangle3 = visual.Rect(win, width=30, height=90, pos=(xy_list[3]), fillColor=color_list[3], ori=orientations_list[3])
distractor_rectangle3.draw()
distractor_rectangle4 = visual.Rect(win, width=30, height=90, pos=(xy_list[4]), fillColor=color_list[4], ori=orientations_list[4])
distractor_rectangle4.draw()
distractor_rectangle5 = visual.Rect(win, width=30, height=90, pos=(xy_list[5]), fillColor=color_list[5], ori=orientations_list[5])
distractor_rectangle5.draw()
distractor_rectangle6 = visual.Rect(win, width=30, height=90, pos=(xy_list[6]), fillColor=color_list[6], ori=orientations_list[6])
distractor_rectangle6.draw()
distractor_rectangle7 = visual.Rect(win, width=30, height=90, pos=(xy_list[7]), fillColor=color_list[7], ori=orientations_list[7])
distractor_rectangle7.draw()
Comments
Looking at your code, you actually seem to have figured this out already. In what sense doesn't your solution work as you'd like it to?
Cheers!
Sebastiaan