如何显示一排随机颜色的圆圈

如何显示一排随机颜色的圆圈

我想要 5 行随机颜色的圆圈。这是我的 MWE:

\documentclass{beamer}
\beamertemplatenavigationsymbolsempty
\setbeamersize{text margin left=10mm,text margin right=5mm} 
\setbeamertemplate{frametitle}[default][center]
\usepackage{tikz}

\newcommand{\tikzcircle}[2][red,fill=red]{\tikz[baseline=-0.5ex]\draw[#1,radius=#2] (0,0) circle ;}%


\begin{document}
\begin{frame}{The counting problem}
\foreach \x in {1,2,...,100}  {\tikzcircle{2pt}}
\end{frame}

\end{document}

我不确定如何随机选择颜色或如何让圆圈环绕以便填充文本通常填充的空间。

如果可能的话,如果我可以从一个我可以指定大小的集合中随机选择颜色并替换,那就太好了。例如,从一组 10 种颜色中随机选择颜色并替换。

答案1

你可以从类似这样的内容开始。代码\randomcolor取自以与 pdflatex 和 lualatex 兼容的方式生成随机颜色

\documentclass{beamer}

\beamertemplatenavigationsymbolsempty
\setbeamersize{text margin left=10mm,text margin right=5mm} 
\setbeamertemplate{frametitle}[default][center]
\usepackage{tikz}

\newcommand{\randomcolor}{%
    \pgfmathsetmacro{\R}{random(0,10000)/10000}%
    \pgfmathsetmacro{\G}{random(0,10000)/10000}%
    \pgfmathsetmacro{\B}{random(0,10000)/10000}%
    \definecolor{randomcolor}{rgb}{\R,\G,\B}%
}

\newcommand{\tikzcircle}[1]{\randomcolor\tikz[baseline=-0.5ex]{\fill[randomcolor,radius=#1]circle;}}%


\pgfmathsetseed{\number\pdfrandomseed} % seed for random generator


\begin{document}

\begin{frame}{The counting problem}

\foreach \j in {1,2,...,5} {\foreach \i in {1,2,...,10} {\tikzcircle{.05\textwidth}}\\}

\end{frame}
\end{document}

在此处输入图片描述

更新:颜色有限

以下代码显示了从有限集合中选择颜色的替代方法。该集合被定义为一个TikZ数组,并使用随机索引选择颜色。

\documentclass{beamer}

\beamertemplatenavigationsymbolsempty
\setbeamersize{text margin left=10mm,text margin right=5mm} 
\setbeamertemplate{frametitle}[default][center]
\usepackage{tikz}

\def\mycolors{{"red","green","blue","brown","pink","violet","orange","cyan","yellow"}}
    
\newcommand{\tikzcircle}[1]{%
    \pgfmathsetmacro{\mycolorindex}{random(0,8)}%
    \pgfmathsetmacro{\mycolor}{array(\mycolors,\mycolorindex)}%
    \tikz[baseline=-0.5ex]{\fill[\mycolor,radius=#1]circle;}}%

\pgfmathsetseed{\number\pdfrandomseed} % seed for random generator

\begin{document}

\begin{frame}{The counting problem}

\foreach \j in {1,2,...,5}{\foreach \i in {1,2,...,10}{\tikzcircle{.05\textwidth}}\\}

\end{frame}
\end{document}

在此处输入图片描述

答案2

尝试使用随机数生成器的参数,同时保持相同的种子。

例如

\documentclass{beamer}

\beamertemplatenavigationsymbolsempty
\setbeamersize{text margin left=10mm,text margin right=5mm} 
\setbeamertemplate{frametitle}[default][center]
\usepackage{tikz}

\newcommand{\randomcolor}{%
    \pgfmathsetmacro{\R}{random(0,1)/2}%
    \pgfmathsetmacro{\G}{random(0,1)/2}%
    \pgfmathsetmacro{\B}{random(0,1)/1}%
    \definecolor{randomcolor}{rgb}{\R,\G,\B}%
}

\newcommand{\tikzcircle}[1]{\randomcolor\tikz[baseline=-0.5ex]{\fill[randomcolor,radius=#1]circle;}}%


%\pgfmathsetseed{\number\pdfrandomseed} % seed for random generator


\begin{document}

\begin{frame}{The counting problem}

\foreach \j in {1,2,...,5}{\foreach \i in {1,2,...,10}{\noindent\tikzcircle{.05\textwidth}}\\}

\end{frame}
\end{document}
    

将产生 2x2x2 = 8 种不同颜色。(R= 0 或 0.5 等)

更少的颜色

相关内容