\documentclass{minimal}
\usepackage{tikz}
\begin{document}
\pgfmathparse{random(-5,5)}
\pgfmathresult
\end{document}
有用,但我有一个.0.0
不应该在这里的东西。
答案1
摘自 PGF 手册第 90.2.6 节第 942 页(版本 3.0.0)
random(x,y)
\pgfmathrandom{x,y}
此函数接受零个、一个或两个参数。如果参数为零,则生成 0 到 1 之间的均匀随机数。如果参数为一个X,1 至X生成。最后,如果有两个参数,则生成一个介于X和是生成。如果没有参数,则应按如下方式调用 PGF 命令:\pgfmathrandom{}
。
手册没有说的是参数应该是非负的。事实上,简单的文档
\documentclass{article}
\usepackage{tikz}
\begin{document}
\pgfmathparse{random(-1,10)}
\end{document}
不应产生任何文本,而是创建以下输出
如果需要-1到10之间的随机数,只需使用
\pgfmathparse{random(1,12)-2}
这被认为是文档中的一个错误。
答案2
我发现了一些关于这个的事情:
首先,pgf将任何计算结果都视为浮点数:
\pgfmathsetmacro{\a}{1 + 1};
\pgfmathsetmacro{\b}{-1};
\pgfmathsetmacro{\c}{1};
\draw (\px, \py) circle(2) node[anchor=north west]{\a,\b,\c};
因此,这将2.0, -1.0, 1
分别产生(-1
被视为计算的负数1
)。
然后,将浮点传递给random
将导致.0
因为random
只取整数部分。
因此,我们只需使用random(int(-10), int(10))
,然后就会.0
消失。