internal Question.AvergaQuestion generateQuestion(AverageConstraint constraint) { bool questionCreated = false; Question.AvergaQuestion q = null; while (true) { int totalNumbers = PeanutButter.RandomGenerators.RandomValueGen.GetRandomInt(constraint.MinTotalNumbers, constraint.MaxTotalNumbers); q = new Question.AvergaQuestion(); int totalNumberGenerated = 0; while (true) { int number = PeanutButter.RandomGenerators.RandomValueGen.GetRandomInt((int)constraint.MinNumber, (int)constraint.MaxNumber); q.Numbers.Add(new Question.SignedNumber() { SortOrder = totalNumberGenerated, Number = number }); totalNumberGenerated++; decimal v = q.Calculate(); if (totalNumberGenerated >= totalNumbers) { if (constraint.AllowDecimal || v == System.Math.Round(v)) { questionCreated = true; break; } } } if (questionCreated) { break; } } return(q); }
bool constraintPasses(AverageConstraint constraint, Logic.Question.IQuestion q) { decimal score = getScore(q); return(score <= constraint.MaxScore || score >= constraint.MinScore); }