MC3330
22-02-2020, 18:12
Hallo,
ich habe zwei Listen, die zufällig gemischt werden. Das klappt so auch, wie ich es haben will (siehe Minimalbeispiel). Mir ist nun aufgefallen, dass ich es teilweise brauche, dass die Listen auf die gleiche Art gemischt werden. Also das zum das erste Element der Liste auf den fünften Platz und das jeweils zweite auf den jeweils dritten Platz gemischt wird.
Ich setzte da jetzt schon recht lange dran, und bekomme es leider nicht hin. Für mich am logischsten wären, wenn man irgendwie eine 2-tuplige Liste erstellen könnte, aber das habe ich leider nicht hinbekommen.
Hat jemand eine Idee, wie das klappen könnte?
Viele Grüße
\documentclass{article}
\usepackage{tikz}
\makeatletter
\def\prunelist#1{% Define prunelist command
\expandafter\edef\csname pgfmath@randomlist@#1\endcsname
{\the\numexpr\csname pgfmath@randomlist@#1\endcsname-1\relax}
\count@\pgfmath@randomtemp
\loop
\expandafter\let
\csname pgfmath@randomlist@#1@\the\count@\expandafter\endc sname
\csname pgfmath@randomlist@#1@\the\numexpr\count@+1\relax\ endcsname
\ifnum\count@<\csname pgfmath@randomlist@#1\endcsname\relax
\advance\count@\@ne
\repeat
}
\makeatother
\newcommand\nextrnd[2]{
\pgfmathrandomitem{\tmp}{#2}% select random element
\edef#1{\tmp}% store random element in #1
\prunelist{#2}%prune list by selected item
}%\
\newcommand{\shufflelist}{
\edef\lpeinso{18.5}%
\edef\lpzweio{16.5}%
\edef\lpdreio{14.5}%
\edef\lpviero{12.5}%
\edef\lpfuenfo{10.5}%
\edef\lpsechso{8.5}%
\edef\lpsiebeno{6.5}%
\edef\lpachto{4.5}%
\edef\lpneuno{2.5}%
\edef\lpzehno{0.5}%
\edef\npeinso{1}%
\edef\npzweio{2}%
\edef\npdreio{3}%
\edef\npviero{4}%
\edef\npfuenfo{5}%
\edef\npsechso{6}%
\edef\npsiebeno{7}%
\edef\npachto{8}%
\edef\npneuno{9}%
\edef\npzehno{10}%
\pgfmathdeclarerandomlist{mynumpos}{{\npeinso}{\np zweio}{\npdreio}{\npviero}{\npfuenfo}{\npsechso}{\ npsiebeno}{\npachto}{\npneuno}{\npzehno}}% Define the list
\pgfmathdeclarerandomlist{mylpos}{{\lpeinso}{\lpzw eio}{\lpdreio}{\lpviero}{\lpfuenfo}{\lpsechso}{\lp siebeno}{\lpachto}{\lpneuno}{\lpzehno}}% Define the list
\nextrnd\npeins{mynumpos}% Store random element in \rnd and remove it from mynum
\nextrnd\npzwei{mynumpos}% Store random element in \rnd and remove it from mynum
\nextrnd\npdrei{mynumpos}% Store random element in \rnd and remove it from mynum
\nextrnd\npvier{mynumpos}% Store random element in \rnd and remove it from mynum
\nextrnd\npfuenf{mynumpos}% Store random element in \rnd and remove it from mynum
\nextrnd\npsechs{mynumpos}% Store random element in \rnd and remove it from mynum
\nextrnd\npsieben{mynumpos}% Store random element in \rnd and remove it from mynum
\nextrnd\npacht{mynumpos}% Store random element in \rnd and remove it from mynum
\nextrnd\npneun{mynumpos}% Store random element in \rnd and remove it from mynum
\nextrnd\npzehn{mynumpos}% Store random element in \rnd and remove it from mynum
\nextrnd\lpeins{mylpos}% Store random element in \rnd and remove it from mynum
\nextrnd\lpzwei{mylpos}% Store random element in \rnd and remove it from mynum
\nextrnd\lpdrei{mylpos}% Store random element in \rnd and remove it from mynum
\nextrnd\lpvier{mylpos}% Store random element in \rnd and remove it from mynum
\nextrnd\lpfuenf{mylpos}% Store random element in \rnd and remove it from mynum
\nextrnd\lpsechs{mylpos}% Store random element in \rnd and remove it from mynum
\nextrnd\lpsieben{mylpos}% Store random element in \rnd and remove it from mynum
\nextrnd\lpacht{mylpos}% Store random element in \rnd and remove it from mynum
\nextrnd\lpneun{mylpos}% Store random element in \rnd and remove it from mynum
\nextrnd\lpzehn{mylpos}% Store random element in \rnd and remove it from mynum
}%\
\begin{document}
\shufflelist
\begin{tabular}{lllll}
Nr.&npo &np &lpo &lp\\
1&\npeinso &\npeins &\lpeinso &\lpeins\\
2&\npzweio &\npzwei &\lpzweio &\lpzwei\\
3&\npdreio &\npdrei &\lpdreio &\lpdrei\\
4&\npviero &\npvier &\lpviero &\lpvier\\
5&\npfuenfo &\npfuenf &\lpfuenfo &\lpfuenf\\
6&\npsechso &\npsechs &\lpsechso &\lpsechs\\
7&\npsiebeno&\npsieben&\lpsiebeno &\lpsieben\\
8&\npachto &\npacht &\lpachto &\lpacht\\
9&\npneuno &\npneun &\lpneuno &\lpneun\\
10&\npzehno &\npzehn &\lpzehno &\lpzehn\\
\end{tabular}
\end{document}
ich habe zwei Listen, die zufällig gemischt werden. Das klappt so auch, wie ich es haben will (siehe Minimalbeispiel). Mir ist nun aufgefallen, dass ich es teilweise brauche, dass die Listen auf die gleiche Art gemischt werden. Also das zum das erste Element der Liste auf den fünften Platz und das jeweils zweite auf den jeweils dritten Platz gemischt wird.
Ich setzte da jetzt schon recht lange dran, und bekomme es leider nicht hin. Für mich am logischsten wären, wenn man irgendwie eine 2-tuplige Liste erstellen könnte, aber das habe ich leider nicht hinbekommen.
Hat jemand eine Idee, wie das klappen könnte?
Viele Grüße
\documentclass{article}
\usepackage{tikz}
\makeatletter
\def\prunelist#1{% Define prunelist command
\expandafter\edef\csname pgfmath@randomlist@#1\endcsname
{\the\numexpr\csname pgfmath@randomlist@#1\endcsname-1\relax}
\count@\pgfmath@randomtemp
\loop
\expandafter\let
\csname pgfmath@randomlist@#1@\the\count@\expandafter\endc sname
\csname pgfmath@randomlist@#1@\the\numexpr\count@+1\relax\ endcsname
\ifnum\count@<\csname pgfmath@randomlist@#1\endcsname\relax
\advance\count@\@ne
\repeat
}
\makeatother
\newcommand\nextrnd[2]{
\pgfmathrandomitem{\tmp}{#2}% select random element
\edef#1{\tmp}% store random element in #1
\prunelist{#2}%prune list by selected item
}%\
\newcommand{\shufflelist}{
\edef\lpeinso{18.5}%
\edef\lpzweio{16.5}%
\edef\lpdreio{14.5}%
\edef\lpviero{12.5}%
\edef\lpfuenfo{10.5}%
\edef\lpsechso{8.5}%
\edef\lpsiebeno{6.5}%
\edef\lpachto{4.5}%
\edef\lpneuno{2.5}%
\edef\lpzehno{0.5}%
\edef\npeinso{1}%
\edef\npzweio{2}%
\edef\npdreio{3}%
\edef\npviero{4}%
\edef\npfuenfo{5}%
\edef\npsechso{6}%
\edef\npsiebeno{7}%
\edef\npachto{8}%
\edef\npneuno{9}%
\edef\npzehno{10}%
\pgfmathdeclarerandomlist{mynumpos}{{\npeinso}{\np zweio}{\npdreio}{\npviero}{\npfuenfo}{\npsechso}{\ npsiebeno}{\npachto}{\npneuno}{\npzehno}}% Define the list
\pgfmathdeclarerandomlist{mylpos}{{\lpeinso}{\lpzw eio}{\lpdreio}{\lpviero}{\lpfuenfo}{\lpsechso}{\lp siebeno}{\lpachto}{\lpneuno}{\lpzehno}}% Define the list
\nextrnd\npeins{mynumpos}% Store random element in \rnd and remove it from mynum
\nextrnd\npzwei{mynumpos}% Store random element in \rnd and remove it from mynum
\nextrnd\npdrei{mynumpos}% Store random element in \rnd and remove it from mynum
\nextrnd\npvier{mynumpos}% Store random element in \rnd and remove it from mynum
\nextrnd\npfuenf{mynumpos}% Store random element in \rnd and remove it from mynum
\nextrnd\npsechs{mynumpos}% Store random element in \rnd and remove it from mynum
\nextrnd\npsieben{mynumpos}% Store random element in \rnd and remove it from mynum
\nextrnd\npacht{mynumpos}% Store random element in \rnd and remove it from mynum
\nextrnd\npneun{mynumpos}% Store random element in \rnd and remove it from mynum
\nextrnd\npzehn{mynumpos}% Store random element in \rnd and remove it from mynum
\nextrnd\lpeins{mylpos}% Store random element in \rnd and remove it from mynum
\nextrnd\lpzwei{mylpos}% Store random element in \rnd and remove it from mynum
\nextrnd\lpdrei{mylpos}% Store random element in \rnd and remove it from mynum
\nextrnd\lpvier{mylpos}% Store random element in \rnd and remove it from mynum
\nextrnd\lpfuenf{mylpos}% Store random element in \rnd and remove it from mynum
\nextrnd\lpsechs{mylpos}% Store random element in \rnd and remove it from mynum
\nextrnd\lpsieben{mylpos}% Store random element in \rnd and remove it from mynum
\nextrnd\lpacht{mylpos}% Store random element in \rnd and remove it from mynum
\nextrnd\lpneun{mylpos}% Store random element in \rnd and remove it from mynum
\nextrnd\lpzehn{mylpos}% Store random element in \rnd and remove it from mynum
}%\
\begin{document}
\shufflelist
\begin{tabular}{lllll}
Nr.&npo &np &lpo &lp\\
1&\npeinso &\npeins &\lpeinso &\lpeins\\
2&\npzweio &\npzwei &\lpzweio &\lpzwei\\
3&\npdreio &\npdrei &\lpdreio &\lpdrei\\
4&\npviero &\npvier &\lpviero &\lpvier\\
5&\npfuenfo &\npfuenf &\lpfuenfo &\lpfuenf\\
6&\npsechso &\npsechs &\lpsechso &\lpsechs\\
7&\npsiebeno&\npsieben&\lpsiebeno &\lpsieben\\
8&\npachto &\npacht &\lpachto &\lpacht\\
9&\npneuno &\npneun &\lpneuno &\lpneun\\
10&\npzehno &\npzehn &\lpzehno &\lpzehn\\
\end{tabular}
\end{document}