private QuestionInfo selectTopic()
        {
            var    newQuestionProbability = Math.Max(0.1, (100 - _knowledge.QuestionCount) / 100.0);
            string topicCandidate;

            while (true)
            {
                if (_rnd.NextDouble() < newQuestionProbability)
                {
                    do
                    {
                        topicCandidate = _questions.GetRandomQuestion();
                    } while (!isGoodQuestion(topicCandidate));

                    _extractor.Linker.LinkUtterance(topicCandidate); //cache linked information
                    _knowledge.AddQuestion(topicCandidate);
                }
                else
                {
                    topicCandidate = _knowledge.GetRandomQuestion();
                }

                if (!_discussedTopics.Contains(topicCandidate))
                {
                    break;
                }
            }

            return(_knowledge.GetInfo(topicCandidate));
        }
 public void RandomizeQuestion (){
     //get a new random question
     currentQuestion = questions.GetRandomQuestion();
 }