\pgfmathparse 返回幻像 .0.0

\pgfmathparse 返回幻像 .0.0
\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消失。

相关内容