Задумал сделать тест на знание английских слов, но уже пару дней не могу понять как такое лучше реализовать. Что я имею: 100000 слов разделенных на 100 групп в каждой из которых 100 слов. Все слова отсортированы по частоте их употребления и соответственно сложности Каждая группа имеет отсчет от 1 - 100 все отсортировано также по частотности Что сделано: Из каждой группы я беру по одному случайному слову и того пользователю выводится 100 слов в тесте. Дальше пользователь отмечает чекбоксы (те слова который он знает) и жмет на кнопку готово и дальше должен происходить расчет. Что мне нужно: Я хочу как то примерно рассчитать сколько человек знает слов исходя из переданных из формы с чекбоксами данных. Код (Text): Процент правильных ответов: 16% из 100% Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 5 [4] => 6 [5] => 10 [6] => 11 [7] => 12 [8] => 13 [9] => 14 [10] => 15 [11] => 26 [12] => 27 [13] => 28 [14] => 33 [15] => 36 [16] => 38 ) Процент выбранных слов определить не проблема, но хочется как то рассчитать сколько слов знает человек, так как у меня есть выбранные слова где в значении массива есть еще и сложность слова (номер категории). Хотелось бы услышать каков должен быть алгоритм и куда копать дальше.
Да действительно нулем ошибся не 100000, а 10000 слов. В структуре чего то необычного нет Код (Text): ID WORD CATEGORY _________________________ 1 the 1 2 of 1 .............................. 5000 stern 50 .............................. 10000 croak 100
Пока нет, но наверное сделаю после. Сейчас меня больше всего интересует формула расчета сколько человек примерно знает английских слов. залил для примера тест сюда https://poliglot16.ru/vocabulary-en/
@pautinaweb, ты получил идентификаторы ответов, теперь сделай запрос в БД и выбери информацию по этим словам, в частности интересует категория сложности. Самый простой вариант это 1 категория - 1 очко, 100 категория - 100 очков. Просто суммируй эти категории (это можно сделать даже в БД) например вот так PHP: $where = !empty($answer) ? " WHERE `ID` IN(" . implode(',',$answer . ")" : ""; $query = "SELECT SUM(`CATEGORY`) AS `COUNT` FROM `table_name`" . $where; не забудь привести к типу integer элементы массива ответов $answer и удалить пустые если появятся
Да проблема у меня в другом, я не могу придумать по какому алгоритму мне высчитать примерное знание слов пользователем, как это сделано например тут http://testyourvocab.com. Запросы к базе мне делать незачем, так как все данные мне и так приходят, после того как пользователь прошел тест и указал слова которые он знает. Что делать с балами, что бы подсчитать примерное количество слов как на том сайте?
@pautinaweb, я вот одного не пойму, посему ты хочешь посчитать примерное количество слов, если ты знаешь точное количество слов? Или тебе на основании количества слов из ста, надо высчитать количество слов из 10000?
Да, я хочу создать тест чтобы любой человек мог узнать свой словарный запас языка (сколько английских слов он примерно знает) Не носитель английского языка, а просто тот кто учит язык знает примерно 5000 - 9000 слов в среднем, (новичок 1000-3000 слов) Понятно что для того чтобы точно узнать надо пройти тест на все 10000 слов, но это очень долго будет, поэтому я хочу чтобы это можно было узнать ответив на тест из 100 слов. Конечно это не совсем точно будет, но хотя бы так.
типа если я ответил на последние 50 слов котрые имеют больший вес правильно, то я знаю 7500 слов из 10000? это же полный бред при таком подходе числа можешь писать от балды, ничего общего с реальными данными у них нет
Ну если последние ты отметил все, а начальные ты не знаешь, то это точно бред будет, так как если ты знаешь и отметил последние, ты наверняка знаешь и более простые слова. Скорее всего будет с точность наоборот, наиболее часто употребляемые слова люди будут знать, а те которые редко встречаются их знать будет гораздо реже
Решил сделать просто (так как ничего умного не придумал) Посчитал максимально возможную сумму в массиве Подсчитал пропорцию которая получилась и прибавил медиальное значение к ней. После этого получаю примерное количество слов которые знает человек. Попробовать пройти тест можно здесь http://poliglot16.ru/test-vocabulary/en/