Как с помощью Mathematica создать набор домашних заданий с множественным выбором для рациональных чисел? - PullRequest
0 голосов
/ 16 января 2012

Я пытаюсь создать набор вопросов с множественным выбором для рациональных чисел для следующих операций: сложение, вычитание, умножение и деление.

Что-то вроде

01) значение 2/ 3 + 5/4 это: а) б) в) г) е)

02) значение 2/3 * 5/8: а) б) в) г) д) е)

и так далее около 25 вопросов.Как мне это сделать с помощью Mathematica?

EDIT

  1. Я получаю сообщение об ошибке при попытке запустить код yoda и не могу понятьЗачем.Вот сообщение об ошибке:

    http://img829.imageshack.us/img829/8463/imagen1em.jpg

  2. Вот макет, показывающий конечный результат, который я хотел бы: http://img827.imageshack.us/img827/7450/imagen2hn.jpg

  3. генерация чисел хороша, но было бы лучше, если бы они были в случайном интервале -100 < x < 100.

Ответы [ 2 ]

3 голосов
/ 16 января 2012

Моя интерпретация такая же, как и у rcollyer - вы хотите случайным образом сгенерировать 25 пар рациональных чисел, причем 4 варианта - это результат {+,-,*,/} для каждой пары, но в случайном порядке. Тогда речь идет об одной случайно выбранной операции над соответствующей парой дробей.

Для этого я настоятельно рекомендую прочитать ответ на вопрос Саши о генерации равномерно распределенных рациональных чисел с верхней границей в знаменателе . В частности, функция RandomFarey, которая является реализацией ответа Саши btilly. Я предлагаю это вместо более интуитивного Rationalize[RandomReal[...]] подхода, потому что, если вы задаете домашнюю работу для фракций, это, вероятно, для класса начальной / средней школы, и вы можете не хотеть любого произвольного рационального числа, которое очевидный подход может выкинуть (например, {273/391, 193/239}, что, вероятно, может быть слишком много, в зависимости от уровня).

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

makeHomework[n_Integer, denominator_Integer] := 
 Module[{rationalPairs = RandomFarey[denominator, 2 n]~Partition~2, 
   operators = {Plus, Subtract, Times, Divide}, 
   randomOp := RandomChoice[{"+", "-", "\[Times]", "\[Divide]"}], 
   choiceList, questionList},

  choiceList = Outer[Apply, operators, rationalPairs, 1];
  questionList = #1 <> randomOp <> #2 <> "=" & @@@ 
    Map[ToString[# // TraditionalForm] &, rationalPairs, {2}];

  Grid[Transpose@{questionList, 
     Row@MapThread[Labeled, {#, {"(a)", "(b)", "(c)", "(d)"}}] & /@ 
      Transpose@choiceList},
   Spacings -> {0, 1}]
  ]

Например, оценка makeHomework[5, 10] дает:

enter image description here

Это, вероятно, займет у вас 90% пути туда. Я действительно в спешке, поэтому есть несколько вещей, которые я не сделал, но я надеюсь, что вы или кто-то еще можете решить эту проблему. Они в основном тривиальны.

  1. Я не учитываю целые числа. Это испортит компоновку (эта будет немного не по теме), если генератор выбрасывает одну.
  2. Я забыл серийный номер
  3. Размеры этикеток должны быть меньше (или наоборот, цифры должны быть больше)
  4. Другие навороты и претензии
2 голосов
/ 16 января 2012

Вы можете просто напечатать это в сетке? что-то вроде этого: (Вы не сказали, какими должны быть ваши a, b, c, d, если вы укажете это, я могу обновить это. Я предполагаю, что у вас будет выбор, откуда-то выбрать. .

enter image description here

t1 = "the value of ";
t2 = " is :  a)  b)  c)   d)";
a = {"1/2", "3/4", "8/9", "4/3"};
b = {"5/6", "5/6", "9/5", "7/9"};
choice = {"a) b) c) d)"};
r = Table[{i, t1, a[[i]] + b[[i]], t2}, {i, 1, Length[a]} ];
r = Insert[r, {" mid term exam", SpanFromLeft}, 1];
r = Insert[r, {" no cheating allowed", SpanFromLeft}, -1];
Grid[
 r,
 Frame -> {1 -> True, All}, Spacings -> {.4, 1}, Alignment -> Center
 ]

редактировать (1)

Вот также демонстрационная программа с использованием Mathematica для генерации вопросов викторины по алгебре. Может быть, это может дать ОП больше идей:

http://demonstrations.wolfram.com/AlgebraQuiz/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...