【问题标题】:How do I generate multiple-choice homework set for rational numbers using Mathematica?如何使用 Mathematica 生成有理数的多项选择作业集?
【发布时间】:2012-01-16 03:10:01
【问题描述】:

我正在尝试为以下运算生成有理数的多项选择题集:加法、减法、乘法和除法。

类似

01) 2/3 + 5/4 的值是:a) b) c) d) e)

02) 2/3 * 5/8 的值是:a) b) c) d) e)

等等大约 25 个问题。如何使用 Mathematica 做到这一点?

编辑

  1. 我在尝试运行 yoda 的代码时遇到错误,但不知道为什么。这是错误消息:

  2. 这是一个模型,显示了我想要的最终输出:

  3. 数字生成不错,但如果随机在-100 < x < 100区间内会更好。

【问题讨论】:

  • 我不完全确定你在问什么。您想随机生成一个处理分数数学的问题集吗?

标签: wolfram-mathematica


【解决方案1】:

我的解释与 rcollyer 的解释相同——你想随机生成 25 对有理数,并且每对有 4 个选择是 {+,-,*,/} 的结果,但顺序是打乱的。那么问题就是对相应的分数对进行一次随机选择的操作。

为了做到这一点,我强烈建议阅读Sasha's question on generating uniformly distributed rational numbers with an upper bound on the denominator 的答案。具体来说,函数RandomFarey,这是Sasha对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] 给出:

这可能会带您完成 90% 的路程。我真的很着急,所以有几件事我没有做,但我希望你或其他人能够解决它。它们大多是微不足道的。

  1. 我不考虑整数。如果生成器抛出一个,这些会弄乱布局(那个会有点脱线)。
  2. 我忘记了序列号
  3. 标签尺寸应该更小(或者相反,数字应该更大)
  4. 其他装饰和美化

【讨论】:

  • 首先非常感谢您的回复,对不起我的英语,可能不是全部,使用谷歌翻译,目前还不太清楚这个页面是如何工作的以及如何操作评论
  • 见我的问题以上版本..对不起,我什至不在这里管理
  • @zeroo 我已经格式化了您的问题并进行了编辑。 RandomFarey 的代码在我的回答中链接到的 Sasha 的问题中,您还需要评估 cfPairscfGCD 才能使用 RandomFarey。一旦你这样做了,它应该会为你评估。
  • ********那里放了“Random Farey”和cfGCD cfPairs但是你的代码,但是当你运行时我得到了很多错误,我做错了什么? ,请看我的第二版...
  • ***edit 2 put image 不会让我做任何事情![](imageshack.us/photo/my-images/651/edit2vr.jpg)
【解决方案2】:

您可以在网格中输入它吗?像这样:(你没有说你的 a,b,c,d 应该是什么,如果你澄清了,我可以更新这个。我假设你可以从某个地方选择一些选择。这可以很容易地添加.

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 生成代数测验问题的演示。也许这可以给OP更多的想法:

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

【讨论】:

  • 感谢您回复您编写的代码不适合我正在尝试做的事情,但谢谢只是给了我一些想法你告诉我的,但这不是我想要的,我以前见过
猜你喜欢
  • 1970-01-01
  • 2021-01-15
  • 2017-07-05
  • 2016-01-23
  • 2014-04-20
  • 2021-11-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-06
相关资源
最近更新 更多