import logging
import random
#trials = 100 # Number of total trials
#T = 20 # Number of targets
#L1 = 10 # Number of lures (foil) similar to the (N+1)-back
#L2 = 10 # Number of lures (foil) similar to the (N-1)-back
#D = trials - L1 - L2 - T # Number of distractors
class SkewedRandomGenerator:
"""Generates random sequence of stimuli for the n-back task. Implementation is based on Ralph (2014)."""
seq = []
def __init__(self,
N = 2,
alphabet=['A','B','C','D','E','F'],
target='A',
trials = 100,
T = 20,
L1 = 10,
L2 = 10):
self.N, self.alphabet, self.target, self.trials, self.T, self.L1, self.L2 = N, alphabet, target, trials, T, L1, L2
self.D = trials - T - L1 - L2
try:
self.alphabet.remove(target)
except ValueError:
#logging.info('Nice, alphabet does not contain the target stimulus!')
pass
def generate(self):
pass
def random_trial(self, trial):
rnd = random.randint(1, self.trials - trial + 1)
T, L1, L2 = self.T, self.L1, self.L2
if rnd < T:
self.T -= 1
return self.target
elif T <= rnd < T + L1:
self.L1 -= 1
return self.seq[-(self.N+1)]
elif T + L1 <= rnd < T + L1 + L2:
self.L2 -= 1
return self.seq[-(self.N-1)]
self.D -= 1
return self.random_distractor()
def random_distractor(self):
pass