高中数学统计部分有时候会出这样的图, 带点随机性质, 然后又不是完全随机的, 如下图
其中点最少的那个, 我模仿到一个代码如下
\begin{tikzpicture}
\tkzDefPoints{0/0/O,3.5/0/X,0/3.5/Y}
\draw[-stealth](O)--(X)node[below]{x};
\draw[-stealth](O)--(Y)node[right]{y};
\foreach \i in {1,2,...,10}
{
\coordinate (T) at ({0.3*\i},{0.3*\i+0.2*rand});
\tkzDrawPoints(T)
}
\tkzLabelPoints[below left](O)
\end{tikzpicture}
但是对于比较复杂的其他选项, 就不知道怎么画了, 因此请教一下大佬们。谢谢。
一个随机的点可以由三个步骤生成:
然后画出点 (x, y+r)
即可。不同的随机分布可以生成不同的图形。
比如类似图 A 的
\documentclass[tikz,border=5pt]{standalone}
\ExplSyntaxOn
\cs_new_protected:Npn \fpstepfromto#1#2#3
{% from, to, nums
\fp_step_inline:nnnn {#1} { (#2-(#1))/(#3-1)*0.99 } {#2}
}
\pgfmathdeclarefunction{nrand}{0}
{% \tex_normaldeviate:D 生成均值为 0,标准差为 65536 的随机整数
\tl_set:Nx \pgfmathresult { \fp_eval:n { \tex_normaldeviate:D/65536 } }
}
\ExplSyntaxOff
\begin{document}
\begin{tikzpicture}
\draw[-stealth](0,0)--(3.5,0)node[below]{$x$};
\draw[-stealth](0,0)--(0,3.5)node[right]{$y$};
\pgfmathdeclarefunction{xx}{1}{\pgfmathparse{#1+nrand*#1/50}}
\pgfmathdeclarefunction{yy}{1}{\pgfmathparse{#1*4/5}} % y=4/5 x
\pgfmathdeclarefunction{res}{1}{\pgfmathparse{nrand/10}}
\fpstepfromto{0.5}{3}{10}{
\pgfmathparse{xx(#1)}\let\xx\pgfmathresult
\fill[black] (\xx,{yy(\xx)+res(\xx)}) circle(1pt);
}
\end{tikzpicture}
\end{document}
感谢回答, 勉强看明白代码了. 还有一些问题请教. fpstepfromto 大约是均匀分布吗? 电脑中的大多数随机数是不是都是均匀分布? 比如那个 rand, 那么常见的正态分布随机数应该如何产生呢? 有这样的函数吗? 歇息.
@u13203
\fpstepfromto
和\foreach\i in {1,2,...,n}
类似,\fpstepfromto{0.5}{3}{10}
会生成 10 个数字,a1=0.5,a10=3,相邻数字的差相等。TikZ 和
\fpeval
的rand
生成的数字都服从均匀分布。可以用
\tex_normaldeviate:D
生成均值为 0,标准差为 65536 的服从正态分布的随机数。见更新的回答。
@u10307 非常感谢