我正在寻找一种方法来创建由随机字母和随机长度组成的字符串。因此,每当使用该命令时,我都会得到不同的字符串。
\documentclass[11pt]{article}
\newcommand{\randomstring}{...}
\begin{document}
\randomstring
\randomstring
\end{document}
输出可能是
卡基乌
或者
哈格夫泽
我想你已经明白了。有人能给我提示一下,从哪里开始吗?
答案1
运用 Manuel 的想法:
\documentclass{article}
\ExplSyntaxOn
\NewExpandableDocumentCommand{\randomstring}{}
{
\randomstring_make:
}
\NewDocumentCommand{\defrandomstring}{sm}
{
\IfBooleanTF{#1}{\cs_set:Npe}{\cs_new:Npe} #2 { \randomstring_make: }
}
\NewDocumentCommand{\setrandomstringlength}{m}
{
\int_set:Nn \l_randomstring_length_int { #1 }
}
\int_new:N \l_randomstring_length_int
\cs_new:Nn \randomstring_make:
{
\prg_replicate:nn { \int_rand:n { \l_randomstring_length_int } }
{
\int_to_alph:n { \int_rand:n { 26 } }
}
}
\ExplSyntaxOff
\setrandomstringlength{26}
\begin{document}
\randomstring
\randomstring
\randomstring
\defrandomstring{\foo}
\texttt{\meaning\foo}
\setrandomstringlength{4}
\randomstring
\randomstring
\defrandomstring*{\foo}
\texttt{\meaning\foo}
\end{document}
我们\setrandomstringlenght
将上限设置为字符串的长度。选择一个介于 1 和此上限(含)之间的随机整数,并使用 随机生成尽可能多的字母\int_to_alph:n { \int_rand:n { 26 } }
。
我们\defrandomstring
可以在宏中存储一个随机字符串。变体\defrandomstring*
不会检查宏是否已定义(请谨慎使用)。
这适用于任何引擎。
请参阅先前版本的编辑历史。