Wolfram mathematica 如何使用Mathematica生成有理数的多项选择题作业集?
我正在尝试为有理数生成一个多项选择题集,用于以下运算:加法、减法、乘法和除法 差不多 01)2/3+5/4的值为:a)b)c)d)e) 02)2/3*5/8的值为:a)b)c)d)e) 以此类推,回答大约25个问题。我如何使用Mathematica实现这一点 编辑Wolfram mathematica 如何使用Mathematica生成有理数的多项选择题作业集?,wolfram-mathematica,Wolfram Mathematica,我正在尝试为有理数生成一个多项选择题集,用于以下运算:加法、减法、乘法和除法 差不多 01)2/3+5/4的值为:a)b)c)d)e) 02)2/3*5/8的值为:a)b)c)d)e) 以此类推,回答大约25个问题。我如何使用Mathematica实现这一点 编辑 当我试图运行尤达的代码时,我遇到了一个错误,但无法找出原因。以下是错误消息: 这是一个模型,显示了我想要的最终输出: 数字生成是好的,但是如果它们是在区间-100{0,1}] ] 例如,评估制作家庭作业[5,10]给出: 我
-100
中随机生成的,则会更好你能把它打在格子里吗?类似这样:(你没有说你的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带来更多想法:
你能在网格中键入它吗?类似这样的内容:(你没有说你的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带来更多想法:
我的解释与rcollyer的解释相同–你想随机生成25对有理数,4个选项是每对上的
{+,-,*,/}
的结果,但顺序是无序的。然后,问题是对相应的一对分数进行一次随机选择的操作
为了做到这一点,我强烈建议阅读的答案。特别是函数RandomFarey
,这是Sasha对btilly答案的实现。我建议这样做,而不是更直观的合理化[RandomReal[…]
方法,因为如果你为分数设置家庭作业,可能是针对小学/中学班级,并且你可能不想要任何明显方法可能会抛出的任意有理数(例如,{273/391193/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}]
]
makebookmook[n_整数,分母_整数]:=
模[{rationalPairs=RandomFarey[分母,2n]~Partition~2,
运算符={加、减、乘、除},
randomOp:=RandomChoice[{“+”,“-”,“\[次],“\[除]”}],
唱诗班成员,问题列表},
choiceList=外部[Apply,operators,rationalPairs,1];
问题列表=#1随机操作#2“=”&@@@
Map[ToString[#//传统形式]&,rationalPairs,{2}];
网格[转置{问题列表,
Row@MapThread[标记为,{#,{(a)”,“(b)”,“(c)”,“(d)”}&/@
Transpose@choiceList},
间距->{0,1}]
]
例如,评估制作家庭作业[5,10]
给出:
这可能要花你90%的时间。我真的很忙,所以有一些事情我还没有做,但我希望你或其他人能解决它。它们大多是琐碎的
我的解释与rcollyer的解释相同——你想随机生成25对有理数,4个选项是每对上的
{+,-,*,/}
的结果,但顺序是无序的。问题是对相应的一对分数进行一次随机选择的操作
为了做到这一点,我强烈建议阅读的答案。特别是函数RandomFarey
,这是Sasha对btilly答案的实现。我建议这样做,而不是更直观的合理化[RandomReal[…]
方法,因为如果你为分数设置家庭作业,可能是针对小学/中学班级,并且你可能不想要任何明显方法可能会抛出的任意有理数(例如,{273/391193/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}]
]
makebookmook[n_整数,分母_整数]:=
模[{rationalPairs=RandomFarey[分母,2n]~Partition~2,
运算符={加、减、乘、除},
randomOp:=RandomChoice[{“+”,“-”,“\[次],“\[除]”}],
唱诗班成员,问题列表},
choiceList=外部[Apply,operators,rationalPairs,1];
问题列表=#1随机操作#2“=”&@@@
Map[ToString[#//传统形式]&,rationalPairs,{2}];
网格[转置{问题列表,
Row@MapThread[标记为,{#,{(a)”,“(b)”,“(c)”,“(d)”}&/@
Transpose@choiceList},
间距->{0,1}]
]
例如,评估制作家庭作业[5,10]
给出:
我真的很忙,所以有几件事我还没有做,但我希望你或其他人能补充一下