Anzeige:
Ergebnis 1 bis 2 von 2

Thema: Zwei Liste auf die gleiche Weise zufällig mischen

  1. #1
    Registrierter Benutzer
    Registriert seit
    12.11.2008
    Beiträge
    219

    Zwei Liste auf die gleiche Weise zufällig mischen

    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

    Code:
    \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\endcsname
        \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}{\npzweio}{\npdreio}{\npviero}{\npfuenfo}{\npsechso}{\npsiebeno}{\npachto}{\npneuno}{\npzehno}}% Define the list 
    	\pgfmathdeclarerandomlist{mylpos}{{\lpeinso}{\lpzweio}{\lpdreio}{\lpviero}{\lpfuenfo}{\lpsechso}{\lpsiebeno}{\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}

  2. #2
    Registrierter Benutzer
    Registriert seit
    12.11.2008
    Beiträge
    219
    Habe es hinbekommen, falls es jemanden interessiert.

    Code:
    \documentclass{article}
    \usepackage{tikz}
    \edef\eins{test}%
    \edef\zwei{test}%
    \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\endcsname
       		\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}%	
    	\edef\nceinso{logicoblau}%
    	\edef\nczweio{logicoblauz}%
    	\edef\ncdreio{logicoorange}%
    	\edef\ncviero{logicoorangez}%
    	\edef\ncfuenfo{logicogruen}%
    	\edef\ncsechso{logicogruenz}%
    	\edef\ncsiebeno{logicorot}%
    	\edef\ncachto{logicorotz}%
    	\edef\ncneuno{logicogelb}%
    	\edef\nczehno{logicogelbz}%
    	\edef\ieinso{A}%
    	\edef\izweio{B}%
    	\edef\idreio{C}%
    	\edef\iviero{D}%
    	\edef\ifuenfo{E}%
    	\edef\isechso{F}%
    	\edef\isiebeno{G}%
    	\edef\iachto{H}%
    	\edef\ineuno{I}%
    	\edef\izehno{J}%
    
    
    	\pgfmathdeclarerandomlist{mynumpos}{%//
    		{{\lpeinso},{\npeinso},{\ieinso}}
    		{{\lpzweio},{\npzweio},{\izweio}}
    		{{\lpdreio},{\npdreio},{\idreio}}
    		{{\lpviero},{\npviero},{\iviero}}
    		{{\lpfuenfo},{\npfuenfo},{\ifuenfo}}
    		{{\lpsechso},{\npsechso},{\isechso}}
    		{{\lpsiebeno},{\npsiebeno},{\isiebeno}}
    		{{\lpachto},{\npachto},{\iachto}}
    		{{\lpneuno},{\npneuno},{\ineuno}}
    		{{\lpzehno},{\npzehno},{\izehno}}
    	}%\\
    	\nextrnd\leins{mynumpos}% Store random element in \rnd and remove it from mynum
    	\foreach \n [count = \i]in  \leins{%//
    		\ifnum \i = 1
    			\xdef\lpeins{\n}
    		\fi
    		\ifnum \i = 2
    			\xdef\npeins{\n}
    		\fi
    		\ifnum \i = 3
    			\xdef\ieins{\n}
    		\fi
    	}%\\
    	\nextrnd\lzwei{mynumpos}% Store random element in \rnd and remove it from mynum
    	\foreach \n [count = \i]in  \lzwei{%//
    		\ifnum \i = 1
    			\xdef\lpzwei{\n}
    		\fi
    		\ifnum \i = 2
    			\xdef\npzwei{\n}
    		\fi
    		\ifnum \i = 3
    			\xdef\izwei{\n}
    		\fi
    	}%\\
    	\nextrnd\ldrei{mynumpos}% Store random element in \rnd and remove it from mynum
    	\foreach \n [count = \i]in  \ldrei{%//
    		\ifnum \i = 1
    			\xdef\lpdrei{\n}
    		\fi
    		\ifnum \i = 2
    			\xdef\npdrei{\n}
    		\fi
    		\ifnum \i = 3
    			\xdef\idrei{\n}
    		\fi
    	}%\\
    	\nextrnd\lvier{mynumpos}% Store random element in \rnd and remove it from mynum
    	\foreach \n [count = \i]in  \lvier{%//
    		\ifnum \i = 1
    			\xdef\lpvier{\n}
    		\fi
    		\ifnum \i = 2
    			\xdef\npvier{\n}
    		\fi
    		\ifnum \i = 3
    			\xdef\ivier{\n}
    		\fi
    	}%\\
    	\nextrnd\lfuenf{mynumpos}% Store random element in \rnd and remove it from mynum
    	\foreach \n [count = \i]in  \lfuenf{%//
    		\ifnum \i = 1
    			\xdef\lpfuenf{\n}
    		\fi
    		\ifnum \i = 2
    			\xdef\npfuenf{\n}
    		\fi
    		\ifnum \i = 3
    			\xdef\ifuenf{\n}
    		\fi
    	}%\\
    	\nextrnd\lsechs{mynumpos}% Store random element in \rnd and remove it from mynum
    	\foreach \n [count = \i]in  \lsechs{%//
    		\ifnum \i = 1
    			\xdef\lpsechs{\n}
    		\fi
    		\ifnum \i = 2
    			\xdef\npsechs{\n}
    		\fi
    		\ifnum \i = 3
    			\xdef\isechs{\n}
    		\fi
    	}%\\
    	\nextrnd\lsieben{mynumpos}% Store random element in \rnd and remove it from mynum
    	\foreach \n [count = \i]in  \lsieben{%//
    		\ifnum \i = 1
    			\xdef\lpsieben{\n}
    		\fi
    		\ifnum \i = 2
    			\xdef\npsieben{\n}
    		\fi
    		\ifnum \i = 3
    			\xdef\isieben{\n}
    		\fi
    	}%\\
    	\nextrnd\lacht{mynumpos}% Store random element in \rnd and remove it from mynum
    	\foreach \n [count = \i]in  \lacht{%//
    		\ifnum \i = 1
    			\xdef\lpacht{\n}
    		\fi
    		\ifnum \i = 2
    			\xdef\npacht{\n}
    		\fi
    		\ifnum \i = 3
    			\xdef\iacht{\n}
    		\fi
    	}%\\
    	\nextrnd\lneun{mynumpos}% Store random element in \rnd and remove it from mynum
    	\foreach \n [count = \i]in  \lneun{%//
    		\ifnum \i = 1
    			\xdef\lpneun{\n}
    		\fi
    		\ifnum \i = 2
    			\xdef\npneun{\n}
    		\fi
    		\ifnum \i = 3
    			\xdef\ineun{\n}
    		\fi
    	}%\\
    	\nextrnd\lzehn{mynumpos}% Store random element in \rnd and remove it from mynum
    	\foreach \n [count = \i]in  \lzehn{%//
    		\ifnum \i = 1
    			\xdef\lpzehn{\n}
    		\fi
    		\ifnum \i = 2
    			\xdef\npzehn{\n}
    		\fi
    		\ifnum \i = 3
    			\xdef\izehn{\n}
    		\fi
    	}%\\
    
    }%\\
    \begin{document}
    \shufflelist
    \begin{tabular}{lll}
    	\lpeinso&\npeinso&\ieinso\\
    	\lpzweio&\npzweio&\izweio\\
    	\lpdreio&\npdreio&\idreio\\
    	\lpviero&\npviero&\iviero\\
    	\lpfuenfo&\npfuenfo&\ifuenfo\\
    	\lpsechso&\npsechso&\isechso\\
    	\lpsiebeno&\npsiebeno&\isiebeno\\
    	\lpachto&\npachto&\iachto\\
    	\lpneuno&\npneuno&\ineuno\\
    	\lpzehno&\npzehno&\izehno\\
    \end{tabular}	
    \begin{tabular}{lll}
    	\lpeins&\npeins&\ieins\\
    	\lpzwei&\npzwei&\izwei\\
    	\lpdrei&\npdrei&\idrei\\
    	\lpvier&\npvier&\ivier\\
    	\lpfuenf&\npfuenf&\ifuenf\\
    	\lpsechs&\npsechs&\isechs\\
    	\lpsieben&\npsieben&\isieben\\
    	\lpacht&\npacht&\iacht\\
    	\lpneun&\npneun&\ineun\\
    	\lpzehn&\npzehn&\izehn\\
    \end{tabular}	
    \end{document}

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •