Позвольте мне добавить пару пунктов к существующему ответу @Edward (+1):
Если вы генерируете решение из последовательности 0.1, 0.2, ..., 0.9 и хотите четыре из оставшихся восемь чисел в качестве отвлекающих факторов, я бы рекомендовал не использовать num_to_schoice()
. Только если перейти к правильному решению в 0.10, 0.11, 0.12, ..., 0.9, скажем, я бы использовал num_to_schoice()
.
Без num_to_schoice()
для одного ди git
Вы можете создать список ответов со всеми девятью номерами из последовательности, отсортировав правильное решение по первой позиции, а затем используя метаинформационный тег exshuffle
, чтобы выполнить фактическую выборку.
Например, в генерации данных вам нужно что-то вроде этого:
sol <- 0.3
ans <- c(sol, setdiff(1:9/10, sol))
ans <- paste0("$", ans, "$")
В вопрос вы можете включить
answerlist(ans, markup = "markdown")
## Answerlist
## ----------
## * $0.3$
## * $0.1$
## * $0.2$
## * $0.4$
## * $0.5$
## * $0.6$
## * $0.7$
## * $0.8$
## * $0.9$
Наконец, метаинформация требует:
exsolution: 100000000
exshuffle: 5
Тогда будет использовано правильное решение и четыре из восьми ложных ответов - все в случайном порядке. (Обратите внимание, что в приведенном выше примере используется синтаксис .Rmd, для .Rnw его необходимо соответствующим образом адаптировать.)
с num_to_schoice()
для двух цифр
Для сценария с одним ди git с использованием num_to_schoice()
, который пытается сделать слишком много вещей, но для более чем одного di git это может быть полезно. В частности, num_to_schoice()
гарантирует, что ранг правильного решения неинформативен, т. Е. Правильным решением может быть наименьшее, второе наименьшее, ..., наибольшее число в отображаемой последовательности с равным вероятность. В частности, это может быть важно, если распределение правильного решения не является равномерным по возможному диапазону. Это причина того, почему следующий код иногда дает сбой:
num_to_schoice(0.3, digits = 1, delta = 0.1, range = c(0.1, 0.9))
Внутренне это сначала решает, сколько из четырех неправильных ответов должно быть слева от правильного решения 0.3. Очевидно, что слева может быть не более двух неправильных ответов, что может привести к предупреждению и результату NULL
в случае превышения. Переход к двум цифрам может решить эту проблему, например:
num_to_schoice(0.31, range = c(0.01, 0.99),
digits = 2, delta = 0.03, method = "delta")
Примечания:
- Лично я бы сделал это, только если правильное решение может потенциально также есть две цифры. В противном случае учащиеся могут выбрать этот шаблон.
- Вы должны убедиться, что слева и справа от правильного решения есть как минимум
4 * delta
, чтобы было достаточно места для неправильных ответов. - Конечно, возможно использование
delta = 0.01
, но если вам нужны большие дельты, то delta = 0.03
или delta = 0.07
также часто являются полезными вариантами. Это связано с тем, что выборка из эквидистантной сетки с такой дельтой обычно не заметна большинству студентов. Напротив, дельты как 0,05, 0,1, 0,02 и т. Д. 1056 *. как правило, подобраны быстро.