Допустим, для вступительных испытаний разработано 20 билетов, в каждом 27 заданий. Как сделать так, чтобы абитуриент при старте теста получал один из 20 вариантов при условии, чтобы ему попались все 27 вопросов одного из билетов? Эти вопросы не должны перемешиваться, т.е. не должно быть ситуации, когда абитуриент получает первый вопрос из 1-го билета, а второй вопрос из 3-го билета - он должен получить все 27 вопросов из первого билета.
Естественно, про случайную выборку я знаю. У меня была мысль создать в банке вопросов 27 категорий и в каждой категории разместить по 20 заданий (первое, второе, третье...., десятое), но где гарантия, что каждому абитуриенту выпадут все вопросы какого-то одного варианта? Они будут перемешиваться и вот это никак уже не настроить.
Ситуацию выше в итоге я решил брут-форсом, просто раскидав пользователей случайно по разным глобальным группам, и к каждому тесту привязывал только те группы, которые должны его проходить. Получилось 44 группы (3 дисциплины, 4 варианта, 3 класса), т.к. некоторые пользователи должны решить сразу 2, а то и 3 теста по разным дисциплинам. В итоге пользователь входит в личный кабинет, открывает курс с дисциплиной и ему попадаются задания только его варианта. Увы, при таком подходе варианты в разных дисциплинах пришлось делать одинаковыми, т.е. 4-й вариант в математике означает и 4-й вариант в химии. Выглядит это дико