有没有更简单的方法来生成乘法表?

有没有更简单的方法来生成乘法表?

我正在尝试寻找一种更简单的方法来生成随机乘法表。我想保持格式不变——包括表格和我添加的行等等……有没有更有效的方法来做到这一点?到目前为止,我刚刚自己添加了它们!感谢您的帮助。

在此处输入图片描述

\documentclass{exam}
\usepackage{tabularray,paracol}

\begin{document}
\begin{paracol}{5}

\begin{tblr}{|X[1,l]|}
\hline
$11 \times 2$ = \\
\hline 
\hline
$6 \times 4$ = \\
\hline 
\hline
$8 \times 8$ = \\
\hline 
\hline
$3 \times 11$ = \\
\hline 
\hline
$9 \times 9$ = \\
\hline 
\hline
$7 \times 5$ = \\
\hline 
\hline
$10 \times 10$ = \\
\hline 
\hline
$4 \times 3$ = \\
\hline 
\hline
$2 \times 6$ = \\
\hline 
\hline
$5 \times 7$ = \\
\hline 
\hline
$11 \times 8$ = \\
\hline 
\hline
$8 \times 9$ = \\
\hline 
\hline
$6 \times 10$ = \\
\hline 
\hline
$3 \times 4$ = \\
\hline 
\hline
$9 \times 7$ = \\
\hline 
\hline
$7 \times 2$ = \\
\hline 
\hline
$10 \times 11$ = \\
\hline 
\hline
$4 \times 6$ = \\
\hline 
\hline
$2 \times 3$ = \\
\hline 
\hline
$5 \times 9$ = \\
\hline 
\hline
$11 \times 7$ = \\
\hline 
\hline
$8 \times 10$ = \\
\hline 
\hline
$6 \times 2$ = \\
\hline 
\hline
$3 \times 9$ = \\
\hline 
\hline
$9 \times 4$ = \\
\hline 
\hline
$7 \times 11$ = \\
\hline 
\hline
$10 \times 6$ = \\
\hline 
\end{tblr}

\switchcolumn

\begin{tblr}{|X[1,l]|}
\hline
$4 \times 7$ = \\
\hline 
\hline
$2 \times 5$ = \\
\hline 
\hline
$5 \times 3$ = \\
\hline 
\hline
$11 \times 9$ = \\
\hline 
\hline
$8 \times 6$ = \\
\hline 
\hline
$6 \times 11$ = \\
\hline 
\hline
$3 \times 2$ = \\
\hline 
\hline
$9 \times 5$ = \\
\hline 
\hline
$7 \times 10$ = \\
\hline 
\hline
$10 \times 7$ = \\
\hline 
\hline
$4 \times 11$ = \\
\hline 
\hline
$2 \times 9$ = \\
\hline 
\hline
$5 \times 6$ = \\
\hline 
\hline
$11 \times 3$ = \\
\hline 
\hline
$8 \times 7$ = \\
\hline 
\hline
$6 \times 5$ = \\
\hline 
\hline
$3 \times 10$ = \\
\hline 
\hline
$9 \times 2$ = \\
\hline 
\hline
$7 \times 4$ = \\
\hline 
\hline
$10 \times 11$ = \\
\hline 
\hline
$4 \times 9$ = \\
\hline 
\hline
$2 \times 7$ = \\
\hline 
\hline
$5 \times 12$ = \\
\hline 
\hline
$11 \times 6$ = \\
\hline 
\hline
$8 \times 11$ = \\
\hline 
\hline
$6 \times 9$ = \\
\hline 
\hline
$3 \times 7$ = \\
\hline
\end{tblr}

\switchcolumn

\begin{tblr}{|X[1,l]|}
\hline
$9 \times 3$ = \\
\hline 
\hline
$7 \times 8$ = \\
\hline 
\hline
$10 \times 5$ = \\
\hline 
\hline
$4 \times 2$ = \\
\hline 
\hline
$2 \times 10$ = \\
\hline 
\hline
$5 \times 4$ = \\
\hline 
\hline
$11 \times 12$ = \\
\hline 
\hline
$8 \times 5$ = \\
\hline 
\hline
$6 \times 7$ = \\
\hline 
\hline
$3 \times 12$ = \\
\hline 
\hline
$9 \times 1$ = \\
\hline 
\hline
$7 \times 6$ = \\
\hline 
\hline
$10 \times 9$ = \\
\hline 
\hline
$4 \times 5$ = \\
\hline 
\hline
$2 \times 8$ = \\
\hline 
\hline
$5 \times 11$ = \\
\hline 
\hline
$11 \times 5$ = \\
\hline 
\hline
$8 \times 12$ = \\
\hline 
\hline
$6 \times 3$ = \\
\hline 
\hline
$3 \times 6$ = \\
\hline 
\hline
$9 \times 10$ = \\
\hline 
\hline
$7 \times 1$ = \\
\hline 
\hline
$10 \times 4$ = \\
\hline 
\hline
$4 \times 10$ = \\
\hline 
\hline
$2 \times 6$ = \\
\hline 
\hline
$5 \times 8$ = \\
\hline 
\hline
$11 \times 11$ = \\
\hline
\end{tblr}

\switchcolumn

\begin{tblr}{|X[1,l]|}
\hline
$8 \times 4$ = \\
\hline 
\hline
$6 \times 12$ = \\
\hline 
\hline
$3 \times 5$ = \\
\hline 
\hline
$9 \times 8$ = \\
\hline 
\hline
$7 \times 2$ = \\
\hline 
\end{tblr}

\end{paracol}
\end{document}

答案1

expl3你有\int_rand:nn

这是一种每行设置五个乘法的方法,无需任何表格或paracol

\documentclass{article}

\ExplSyntaxOn

\NewDocumentCommand{\randommult}{m}
 {% #1 = number of items
  \par\addvspace{\topsep}
  \group_begin:
  \setlength{\parindent}{0pt}
  \setlength{\parfillskip}{0pt}
  \linespread{1.5}\selectfont
  \tse_randommult:n { #1 }
  \par
  \group_end:
  \addvspace{\topsep}
 }

\cs_new_protected:Nn \tse_randommult:n
 {
  \prg_replicate:nn { #1 } { \__tse_randommult: }
  \int_compare:nF { \int_mod:nn { #1 } { 5 } = 0 }
   {
    \prg_replicate:nn { 5 - \int_mod:nn { #1 } { 5 } } { \__tse_randommult_box:Nn \makebox {} }
   }
 }

\cs_new_protected:Nn \__tse_randommult:
 {
  \__tse_randommult_box:Nn \framebox { $\int_rand:nn { 1 } { 19 } \times \int_rand:nn { 1 } { 19 } =$ }
 }

\cs_new_protected:Nn \__tse_randommult_box:Nn
 {
  #1[\dim_eval:n { (\textwidth - 4em)/5 }][l]{ #2 } \hspace{1em plus 1 fil}
 }

\ExplSyntaxOff


\begin{document}

\section*{Compute the following seventeen multiplications}

\randommult{17}

\section*{Compute the following ten multiplications}

\randommult{10}

\section*{Compute the following nineteen multiplications}

\randommult{19}

\end{document}

在此处输入图片描述

答案2

(我已编辑答案以纳入 OP 在评论中提供的信息,即exam可能使用文档类。)

我正在尝试寻找一种更简单的方法来生成随机乘法表。...有没有更有效的方法来做到这一点?

如果可以自由使用 LuaLaTeX,那么实现 OP 的排版目标就很简单了。下面给出的代码使用了 Lua 的for循环以及tex.sprintmath.random函数。对于整数m>2,返回从到math.random(2,m)范围内的均匀分布的整数。在下面使用的代码中,我使用了,因为 OP 代码中使用的最大整数似乎是。请注意,由于 TeX 特殊字符在 Lua 中具有特殊含义,因此需要输入反斜杠字符作为。2mmath.random(2,12)12\\\

以下布局遵循 OP 示例中提供的布局:3 列,每列 27 个案例,然后是 1 列,每列 5 个案例。为简单起见,我只显示前 8 行,而不是完整答案的所有 27 行。

在此处输入图片描述

补充:Lua 代码目前独立抽取伪随机数。由于有 11 个不同的整数,因此连续两个情况相同的概率为 1/121。屏幕截图中第三列的顶部就出现了这种重复情况。如果这被视为有问题,可以添加一些额外的代码来消除这种重复情况。

% !TEX TS-program = lualatex
\documentclass{exam}
\usepackage{array} % for 'w' column type

% The Lua function 'myfunc' does most of the work:
\directlua{
  function myfunc ( n )
    tex.sprint ( "\\begin{array}[t]{|wl{2.25cm}|}" )
    for i = 1,n do
      tex.sprint ( "\\hline" .. math.random(2,12) .. "\\times"  
                   .. math.random(2,12) .. "= \\\\ \\hline" )
    end
    tex.sprint ( "\\end{array}" )
  end
}
\begin{document}
\begin{questions}
\begin{question}[86] Solve the following multiplication cases. 1 point per case.
\[
\directlua { myfunc(27) } \qquad
\directlua { myfunc(27) } \qquad
\directlua { myfunc(27) } \qquad
\directlua { myfunc(5)  }
\]
\end{question} 
\end{questions}
\end{document}

相关内容