diff --git a/py/skewed_random_generator.py b/py/skewed_random_generator.py index e011bff..74c91be 100644 --- a/py/skewed_random_generator.py +++ b/py/skewed_random_generator.py @@ -1,4 +1,5 @@ - +import logging +import random #trials = 100 # Number of total trials #T = 20 # Number of targets @@ -6,6 +7,46 @@ #L2 = 10 # Number of lures (foil) similar to the (N-1)-back #D = trials - L1 - L2 - T # Number of distractors -def generate(N = 2, trials = 100, T = 20, L1 = 10, L2 = 10): - D = trials - T - L1 - L2 - pass \ No newline at end of file +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 \ No newline at end of file