Есть список вопросов с ответами. Есть список персонажей. Для каждого персонажа в базу заносятся правильные ответы на вопросы. Когда пользователь отвечает на вопрос, некоторые персонажи отметаются, потому что ответ пользователя не совпадает с ответом для этих персонажей. Затем выбирается случайный вопрос, ответ на который может исключить еще каких-то персонажей. В результате остается один вариант. Если вариантов не остается, ищется вариант, который подошел бы, если бы пользователь один раз дал неверный ответ. И так далее.