如何创建随机字母?

如何创建随机字母?

我正在尝试创建由随机数生成的代数测验,每个练习的变量都是字母表中的随机字母。

我想我可以得出随机数。

不确定如何生成随机字母。 中是否有此功能pgf?还是我必须使用\pgfmathdeclarerandomlist{\listname}{<EntireAlphabet>}\pgfmathrandomitem

答案1

因为我们处理的是 TeX,谁在乎效率

\documentclass[]{article}
\usepackage{pgffor,pgfmath}
\def\getrandomletter{%
  \pgfmathrandominteger{\mytemp}{1}{26}%
  \foreach\x[count=\xi] in{a,...,z}{\ifnum\xi=\mytemp\x\breakforeach\fi}%
}
\begin{document}
  \foreach\x in{1,...,26}{\getrandomletter}
\end{document}

在此处输入图片描述


我太傻了,没记住alphalph这个包。它将数字转换成各种符号。

\documentclass[]{article}
\usepackage{pgffor,pgfmath,alphalph}
\def\getrandomletter{\pgfmathrandominteger{\mytemp}{1}{26}\alphalph{\mytemp}}
\begin{document}
\foreach\x in{1,...,26}{\getrandomletter}
\end{document}

给出相同的输出。


好吧,我继续傻下去。pgffor已经理解字母将数字转换为字母。所以我们不需要alphalph。我会多喝点咖啡。

\documentclass[]{article}
\usepackage{pgffor,pgfmath}
\def\getrandomletter{\pgfmathrandominteger{\zzz}{1}{26}\csname pgffor@alpha\endcsname{\zzz}}
\begin{document}
\foreach\x in{1,...,26}{\getrandomletter}
\end{document}

答案2

仅使用普通的 TeX 宏,您可以执行以下操作:

\input random
\newcount\code
\def\ranx{\setrannum\code{`a}{`z}\char\code}

\ranx \ranx \ranx \ranx \ranx \ranx \ranx \ranx \ranx

\bye

答案3

以下内容(目前)不适用于 XeLaTeX:

\documentclass{article}
\usepackage{xparse}

\ExplSyntaxOn
\NewExpandableDocumentCommand{\randomletter}{}
 {
  \int_to_alph:n { \fp_eval:n { randint(1,26) } }
 }
\NewExpandableDocumentCommand{\randomLetter}{}
 {
  \int_to_Alph:n { \fp_eval:n { randint(1,26) } }
 }
\ExplSyntaxOff

\begin{document}

\randomletter\ \randomletter\ \randomletter\ \randomletter\ \randomletter

\randomLetter\ \randomLetter\ \randomLetter\ \randomLetter\ \randomLetter

\end{document}

在此处输入图片描述

相关内容