###前提
python (psychopy) 余剰演算による表示を分岐を使用しています。同じ分岐が3回以上連続しないようにしたいです。
今は分岐は完成しており、単純にランダムに回るようになっています。
roopno %3 == 2 →A分岐
roopno %3 == 1 →B分岐
roopno %3 == 0 →C分岐
##実現したいこと
いずれの分岐も同じ分岐がもう一度だけ続くのは許可し、3回以上連続しないようにしたいです。
A→ A→ B→ B→ C→ C 〇
A→ A→ A ×
どのように実装するか悩んでいます。
よいアイデアを頂ければ幸いです。宜しくお願いいたします。
###該当のソースコード
from psychopy import visual, core, event, gui, data, misc from psychopy import parallel from psychopy.constants import * import gc, numpy, os, random, time, csv, cv2, codecs, sys, random # -*- coding: utf-8 -*- try: # 画面の準備 stimdir = 'hoge' myWin=visual.Window(fullscr=False,size=[1920,1080],monitor='Default',allowGUI=True,units='norm',color=(0,0,0)) trials = visual.TextStim(myWin, text = '',pos = (0,0), color = (-1,-1,-1)) blank = visual.TextStim(myWin, text = '',pos = (0,0), color = (-1,-1,-1)) trialStart=core.Clock() stopwatch = core.Clock() trialList = range(0,300) # 0-300の数字をつくりランダム化、次の行でroopnoの変数に入れ込む。 for roopno in range(3): #とりあえず3試行繰り返す numpy.random.shuffle(trialList) # 3条件全部での試行数分枠を作る trials.setText('+') #注視点 trialStart.reset() while trialStart.getTime() <0.5: trials.draw() myWin.flip() #A if trialList[roopno] % 3 == 2 : # 余剰演算で条件の出し方を分岐させる stopwatch.reset() trialA = visual.ImageStim(myWin, image = stimdir+'\A.png',pos = (0,0)) while stopwatch.getTime() < 0.5: trialA.draw() myWin.flip() core.wait(0.5) #B elif trialList[roopno] % 3 == 1: stopwatch.reset() trialB = visual.ImageStim(myWin, image = stimdir+'\B.png',pos = (0,0)) while stopwatch.getTime() < 0.5: trialB.draw() myWin.flip() core.wait(0.5) #C elif trialList[roopno] % 3 == 0: stopwatch.reset() trialC = visual.ImageStim(myWin, image = stimdir+'\C.png',pos = (0,0)) while stopwatch.getTime() < 0.5: trialC.draw() myWin.flip() core.wait(0.5) except TypeError, e: print e
プログラムのコード部分は、コードブロックに入れてください。
回答2件
あなたの回答
tips
プレビュー