2015-12-24 3 views
1

Я делаю викторину как игру, в которой я генерирую математическое выражение, а затем генерирую плюс два поддельных ответа, учитывая результат сгенерированного математического выражения. Таким образом, пользователь видит математическое выражение и получает три ответа, из которых ему нужно выбрать правильный.Создайте поддельные ответы для вычисления математики

До сих пор я

switch(opIndexValue) 
{ 
    case Helper.CASE_ADD: 
     answer1 = resultValue + Random.Range(1, 4); 
     answer2 = resultValue - Random.Range(1, 4); 
     break; 
    case Helper.CASE_SUBTR: 
     answer1 = resultValue + Random.Range(1, 4); 
     answer2 = resultValue - Random.Range(1, 4); 
     break; 
    case Helper.CASE_MULTI: 
     answer1 = resultValue + Random.Range(1, 4); 
     answer2 = resultValue - Random.Range(1, 4); 
     break; 
    case Helper.CASE_DIVIS: 
     answer1 = resultValue + Random.Range(1, 4); 
     answer2 = resultValue - Random.Range(1, 4); 
     break; 
} 

Это выглядит прилично, и это делает работу, но ее вид родовое. Если вы и взрослый человек, вам будет очень легко отличить правильное решение среди трех, даже не вычисляя в уме.

Если вы были математиком, как бы вы создали два поддельных ответа? С другой стороны, как бы вы создали 4 поддельных ответа? :)

Код написан на C#/Unity3D 5.1.4.

+1

Похоже, вы имеете дело только с арифметикой и примитивными операциями. В этом случае я бы выполнил простой делегат под названием ArithmeticOperation, который взял бы 2 аргумента и добавил/размножал/... их. В приложении я бы использовал 1 правильное ArithmeticOperation и выбрать другое случайное арифметическое действие. –

+1

Я голосую, чтобы закрыть этот вопрос как не по теме, потому что он больше связан с появлением хороших ответов на викторину, чем с программированием. – Bart

+1

@Bart Я не согласен. Влад, читайте о [делегатах C#] (https://msdn.microsoft.com/en-us/library/ms173171.aspx) –

ответ

1

Это общая проблема.

Одна из возможностей - найти решение, которое другие создали. Например, Thinksy сделал плагин Unity, который может запрашивать вопросы со своего сервера, а также правильный ответ и отвлекать неправильные ответы, подходящие для множественного выбора. Когда я последний раз проверял, их система была довольно грубой и ограничивалась вопросами К-2, но в итоге у них могло быть что-то полезное.

Я рекомендую создать собственную систему для создания отвлекающих неправильных ответов. Вы не должны предполагать, что все ошибки - это просто добавление случайного малого числа в ответ.Ошибочно ошибаться, делая ошибки в других цифрах (34 + 57 = 81) или выполняя неправильную операцию (5 * 6 = 11) или используя неправильные входы (7^2 = 64). Итак, попробуйте выбрать случайный случай случайным образом, а затем убедитесь, что вы случайно не получили правильный ответ (1/2 * 1/3 = 1/2 - 1/3) или ранее сгенерированный неправильный ответ.

2

Ошибка в подходе к вашему вопросу заключается в том, что медиана трех возможных ответов всегда является правильным ответом. Я даже не нужно знать, что проблема: если возможные ответы

(а) 7
(б) 4
(с) 5

ответ должен быть (с) 5 .

Лучший способ сделать это - имитировать, как люди обычно выполняют сложение, вычитание, умножение, деление и т. Д. Добавление многозначных чисел часто предполагает перемещение справа налево, добавление выровненных цифр и «перенос 1 «. Иногда люди ошибаются, забывая нести 1 или неправильно добавляя пару одиночных цифр.

Вот пример. Скажем, проблема 38 + 65. Я хотел бы решить эту проблему так:

  1  11  11  <-- carried 1's 
    38  38  38  38 
+ 65 + 65 + 65 + 65 
---- ---- ---- ---- 
      3  03 103 

Это были отдельные операции я выполнил

(1) 8 + 5 => 13
(2) Носите 1
(3) 1 + 3 + 6 => 10
(4) Носите 1

что бы хороший способ генерировать неправильные ответы на проблемы, которые соответствуют общие ошибки люди делают? Просто вводите ошибки в один из 4 шагов выше.

Например, если я сгенерировал неверный ответ, пропуская шаг (2), я хотел бы получить ответ 93.

+0

Вам нужно будет сделать это для любой поддерживаемой операции. И если фактические вопросы состоят из нескольких операций, может быть, даже скобок, вам будет еще интереснее работать! – CodeCaster

Смежные вопросы