diff --git a/src/main/scala/org/xcit/nback/generators/SkewedSequenceGenerator.scala b/src/main/scala/org/xcit/nback/generators/SkewedSequenceGenerator.scala index 6e82300..c30d341 100644 --- a/src/main/scala/org/xcit/nback/generators/SkewedSequenceGenerator.scala +++ b/src/main/scala/org/xcit/nback/generators/SkewedSequenceGenerator.scala @@ -1,7 +1,10 @@ package org.xcit.nback.generators +import scala.util.Random + /** * Reference: Ralph2014 - Appendix A + * * @param alphabet Alphabet used to generate the sequence, excluding the target item * @param target Target character. * @param N The set size of stimuli to remember (n in n-back). Default is 3. @@ -21,14 +24,38 @@ L2: Double = 4) extends SequenceGenerator { - private class TrialType extends Enumeration { - //TODO Types: LURE1, LURE2, TARGET, DISTRACTOR + /** + * Types of each trial (L1, L2, T, or D). + */ + private object TrialType extends Enumeration { + val LURE_BEFORE_TARGET, LURE_AFTER_TARGET, TARGET, DISTRACTOR = Value } override def generate(trials: Int): String = { //1. Init alphabet and buffer - //2. For each trial, generate a random type + + var trial = 0 + while (trial < trials) { + trial += 1 + //2. For each trial, generate a random type (L1, L2, T, or D) + val trialType = nextTrialType(trials) + } //3. Based on the generated type, generate the item and append it to the buffer //4. Convert buffer to string and return it as result ??? } + + + /** + * Defines next trial types randomly. It returns L1, L2, T, or D (Ralph2014). + * Random range: [1, trials] (both are inclusive based on ralph2014!) + * @param trials number trials + * @return + */ + private def nextTrialType(trials: Int): TrialType.Value = { Random.nextInt(trials + 1) + 1 } match { + case rnd if rnd <= L1 => TrialType.LURE_BEFORE_TARGET + case rnd if rnd < rnd && rnd <= L1+L2 => TrialType.LURE_AFTER_TARGET + case rnd if rnd <= L1 => TrialType.TARGET + case _ => TrialType.DISTRACTOR + + } }