![Как показать ряды случайно раскрашенных кругов](https://rvso.com/image/420059/%D0%9A%D0%B0%D0%BA%20%D0%BF%D0%BE%D0%BA%D0%B0%D0%B7%D0%B0%D1%82%D1%8C%20%D1%80%D1%8F%D0%B4%D1%8B%20%D1%81%D0%BB%D1%83%D1%87%D0%B0%D0%B9%D0%BD%D0%BE%20%D1%80%D0%B0%D1%81%D0%BA%D1%80%D0%B0%D1%88%D0%B5%D0%BD%D0%BD%D1%8B%D1%85%20%D0%BA%D1%80%D1%83%D0%B3%D0%BE%D0%B2.png)
Я хотел бы иметь 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 и т. д.)