Wolfram mathematica 如何使用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]给出: 我

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

差不多

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

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

以此类推,回答大约25个问题。我如何使用Mathematica实现这一点

编辑

  • 当我试图运行尤达的代码时,我遇到了一个错误,但无法找出原因。以下是错误消息:

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

  • 数字生成是好的,但是如果它们是在区间
    -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]
    给出:

    我真的很忙,所以有几件事我还没有做,但我希望你或其他人能补充一下