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);
        }