![TikZ:增加 foreach 循环](https://linux22.com/image/299464/TikZ%EF%BC%9A%E5%A2%9E%E5%8A%A0%20foreach%20%E5%BE%AA%E7%8E%AF.png)
我正在(X, Y)
平面上绘制一个随机向量,其中 X 和 Y 定义为骰子的掷出结果,X 是骰子 1 加骰子 2,Y 是骰子 1 减骰子 2。
我无法设置foreach
循环来处理此任务。我正在考虑(虽然行不通,但也许可以修改)
\documentclass[tikz]{standalone}
\begin{document}
\begin{tikzpicture}
\foreach[count = \x from 1] \y in {1, 2, ..., 6}{
\fill[red] (\x + \y, \x - \y) circle[radius = 0.02cm];
}
\end{tikzpicture}
\end{document}
我之所以以此来命名该点,(\x + \y, \x - \y)
是因为我不确定如何构建这个方面以使其贯穿所有选项。
答案1
或许...
\documentclass[tikz,border=5]{standalone}
\usepackage{epsdice}
\begin{document}
\tikz[x=.75cm,y=.75cm]
\foreach \x in {1,...,6}
\foreach \y in {1,...,6}
\fill (\x+\y, \x-\y) circle[radius = 0.02cm]
node [above] {\epsdice\x\ \epsdice\y};
\end{document}
答案2
我不太确定我是否理解了你试图做的事情。例如,掷骰子应该是 6 次(随机)、2 次还是 6 对 2 次掷骰子?正如\x
循环一样1,...,6
,我认为可能掷骰子 6 次,但这可能意味着标准骰子上有 1 到 6 的数字,或者不是...:)
我的第一印象是你想要这样的东西(6次随机掷骰子的情节):
\pgfmathrandominteger
此处使用以下代码随机放置点:
\documentclass[tikz]{standalone}
\begin{document}
\begin{tikzpicture}
\draw[thick] (0,-0.5)--(0,6.5);
\draw[thick] (-0.5,0)--(6.5,0);
\foreach \x in {1, 2, ..., 6}{
\pgfmathrandominteger{\y}{1}{6}% random number between 1 and 6
\fill[red] (\x,\y) circle[radius = 2mm];
\draw[thin](\x,0.2)--(\x,-0.2)node[below]{$\x$};
\draw[thin](0.2,\x)--(-0.2,\x)node[left]{$\x$};
}
\end{tikzpicture}
\end{document}
您可以使用明确设置随机生成器使用的种子\pgfmathsetseed
——默认种子是\time×\year
。
我放了轴,让点的分布更清晰。我还更改了点的大小,因为0.02cm
它太小了。
然而,重新阅读你的问题,你似乎希望绘制点的坐标是两次掷骰子的结果之和与差,所以也许你真的在寻找这种排序图:
它是使用以下方式创建的:
\documentclass[tikz]{standalone}
\begin{document}
\begin{tikzpicture}
\draw[thick] (0,-5.5)--(0,5.5);
\draw[thick] (-0.5,0)--(12.5,0);
\foreach \i in {1, 2, ..., 6}{
\pgfmathrandominteger{\x}{1}{6}
\pgfmathrandominteger{\y}{1}{6}
\fill[red] (\x + \y, \x - \y) circle[radius = 2mm];
}
\foreach \i in {1,2,...,5} {
\draw[thin](0.2,\i)--(-0.2,\i)node[left]{$\i$};
\draw[thin](0.2,-\i)--(-0.2,-\i)node[left]{$-\i$};
}
\foreach \i in {1,2,...,12} {
\draw[thin](\i,0.2)--(\i,-0.2)node[below]{$\i$};
}
\end{tikzpicture}
\end{document}
如果您对大量点执行此操作,那么您当然只会填充线条所包围的整数格中的所有点(2,0)--(7,5)--(12,0)--(7,-5)--(2,0)
。