예제 #1
0
 private void populateResponses() throws SurveyException {
   Interpreter interpreter = new Interpreter(survey);
   do {
     Question q = interpreter.getNextQuestion();
     SurveyDatum[] c = q.getOptListByIndex();
     List<SurveyDatum> answers = new ArrayList<>();
     // calculate our answer
     if (q.freetext) {
       answers.add(new StringDatum(generateStringComponent(q), -1, -1));
     } else {
       int denom = getDenominator(q);
       double prob = rng.nextDouble();
       double cumulativeProb = 0.0;
       for (int j = 0; j < denom; j++) {
         assert posPref.get(q).length == denom
             : String.format(
                 "Expected position preference question options and denom to be equal (%d = %d)",
                 posPref.get(q).length, denom);
         cumulativeProb += posPref.get(q)[j];
         if (prob < cumulativeProb) {
           answers.addAll(selectOptions(j, c));
           break;
         }
       }
     }
     interpreter.answer(q, answers);
   } while (!interpreter.terminated());
   this.response = interpreter.getResponse();
   this.response.setKnownValidityStatus(KnownValidityStatus.NO);
 }