Пользователи моего приложения (на самом деле это игра) отвечают на вопросы, чтобы получить очки. Вопросы предоставляются другими пользователями. Из-за громкости я не могу сам все проверить, поэтому я решил собрать процесс фильтрации для пользователей (игроков). Правила просты:
- каждому пользователю задается вопрос, чтобы оценить его как хороший / плохой / неуверенный
- когда вопрос оценен 5 раз как "плохой", он удаляется из пула
- когда вопрос оценен 5 раз как "хороший", он удаляется из опроса и помечается для воспроизведения другими игроками, которые его не видели
Если бы все могли видеть все, это было бы легко. Однако на более позднем этапе игры пользователи не должны получать вопросы, которые они уже видели. Это означает, что пользователи не должны видеть все вопросы, и именно те, которые они не видят, получат возможность играть (ответить) позже в игре.
Общее количество вопросов намного превышает количество игроков, новые вопросы добавляются ежедневно, и новые игроки приходят постоянно, поэтому я не могу просто распределить заранее.
Я ищу какой-нибудь алгоритм, который бы максимально увеличивал количество оцениваемых игровых (то есть невидимых) вопросов для всех игроков.
Я пытался зайти в Google, но я даже не уверен, какие термины добавить в окно поиска, и использование таких элементов, как «распространение», «голосование», «совместная фильтрация», дает очень интересные, но непригодные результаты.
Соотношение хороших и плохих вопросов составляет 1: 3, т.е. 25% вопросов оцениваются как хорошие. Количество уже отправленных без ответов вопросов превышает 10000. Количество активных пользователей с правом голоса составляет около 150.
В настоящее время я рассматриваю возможность разделения пула вопросов и базы пользователей на 2 части. Одна часть базы пользователей будет проверять вопрос для другой части, и наоборот. Разделить вопросы легко (например, нечетное или четное). Тем не менее, я все еще не уверен, как разделить базу пользователей. Я думал об использовании нечетной / четной позиции в списке «главных вопросов», однако позиции в списке меняются ежедневно по мере проверки новых вопросов.
Обновление: Я только что попросил продолжение этого вопроса - Мне нужно периодически удалять фиксированное количество вопросов из пула.