Zufällige Auswahl von Dateiproblemen

Zufällige Auswahl von Dateiproblemen

Ich habe versucht, eine exammit zufällig ausgewählten Fragen aus verschiedenen Dateien zu erstellen, wie gezeigtHier.

Der von mir verwendete Code funktioniert, wird aber nur nach dem Zufallsprinzip ausgewählt. Das heißt, für die 1. Runde gibt es einen Fragensatz, in der 2.-4. Runde keine Änderung, in der 5. und 6. Runde eine neue Reihenfolge und für einige weitere Zusammenstellungen ebenfalls keine Änderung.

Es gibt keine Fehler, nur die Zufallsauswahl schlägt beim Kompilieren fehl. Vielleicht ist es nur Zufall. Ich verwende nur 9 Dateien, aber sie sollten trotzdem mindestens 1 Änderung aufweisen (gemäß der Wahrscheinlichkeitstheorie).

Ich benutze TeXLive v1.17.

Unten habe ich 3 Ordner mit den Namen „Photochem“, „Photophys“ und „Quenching“. In jedem dieser Ordner habe ich 3 Dateien mit den Namen PC1.tex, PC2.tex, PC3.tex; PP1.tex, PP2.tex, PP3.tex; und Quench1.tex, Quench2.tex, Quench3.tex.

Jede Datei enthält nur den Dateinamen als Text (genau wie ein Hello WorldBeispiel), sodass ich sehen kann, welche Datei ausgewählt wird.

Kann jemand anders das Szenario nachstellen und wenn ja, hätte ich einen Vorschlag, wie man es überwinden kann?

\documentclass{article}
%\usepackage[paperheight=3.0cm, paperwidth=12.0cm, margin=0.1cm]{geometry}% Simplify image capture

\usepackage{enumitem}
\usepackage{tikz}% Easy way to get all the pgf functions

% The list of topics determines how many questions will be in the quiz
% since it appears that you want one question per topic in a quiz.
% This could be auto generated.
\newcommand*{\ListOfTopics}{%
Photochem,%  MUST have trailing % here
Photophys,%
Quenching%  
}%


% These list of files names from each question can be auto generated
% but for example purposes I am just using the file names as the
% content in the file. The number of questions in each topic do not
% need to be the same.  I would create directories with the topic 
% names and auto generate this based on the directory and file names.

\pgfmathdeclarerandomlist{Photochem}{%
{PC1}%
{PC2}%
{PC3}%
}%
\pgfmathdeclarerandomlist{Photophys}{%
{PP1}%
{PP2}%
{PP3}%
}%
\pgfmathdeclarerandomlist{Quenching}{%
{Quench1}%
{Quench2}%
{Quench3}%
}%



\newcommand*{\NumberOfQuizes}{4}%

\begin{document}
\foreach \QuizNumber in {1,...,\NumberOfQuizes} {%
\clearpage% Start each quiz on a new page
\noindent\textbf{\Large Quiz Number \QuizNumber}%
\begin{enumerate}
\foreach \Topic in \ListOfTopics {%
    % Determine random question to use form list
    \pgfmathrandomitem{\RandomQuestion}{\Topic} 
    % The following should import the file named in \RandomQuestion
    \item Random Question from Topic='\Topic': 
        \textbf{\Large\RandomQuestion}%
}%
\end{enumerate}
}%

\end{document}

Antwort1

Das Problem ist vielleicht der Zufallsstartwert, aber ich habe nicht in der tikzBibliothek nachgesehen. In meiner Lösung stelle ich den Zufallsstartwert auf einen Wert vom aktuellen Zeitwert ein.

\documentclass{article}
\usepackage{datetime} % Needed for \currentsecond,\currentminute commands
\usepackage{calculator} % Needed for some calc, but perhaps can be done with tikz too
%\usepackage[paperheight=3.0cm, paperwidth=12.0cm, margin=0.1cm]{geometry}% Simplify image capture

\usepackage{enumitem}
\usepackage{tikz}% Easy way to get all the pgf functions

% The list of topics determines how many questions will be in the quiz
% since it appears that you want one question per topic in a quiz.
% This could be auto generated.
\newcommand*{\ListOfTopics}{%
Photochem,%  MUST have trailing % here
Photophys,%
Quenching%  
}%


% These list of files names from each question can be auto generated
% but for example purposes I am just using the file names as the
% content in the file. The number of questions in each topic do not
% need to be the same.  I would create directories with the topic 
% names and auto generate this based on the directory and file names.

\pgfmathdeclarerandomlist{Photochem}{%
{PC1}%
{PC2}%
{PC3}%
}%
\pgfmathdeclarerandomlist{Photophys}{%
{PP1}%
{PP2}%
{PP3}%
}%
\pgfmathdeclarerandomlist{Quenching}{%
{Quench1}%
{Quench2}%
{Quench3}%
}%



\newcommand*{\NumberOfQuizes}{8}%

\begin{document}
\def\TotalSecondsMinute{}
\def\TotalSeconds{}
\MULTIPLY{\currentminute}{60.0}{\TotalSecondsMinute} 
\ADD{\TotalSecondsMinute}{\currentsecond}{\TotalSeconds}
\TotalSeconds
\pgfmathsetseed{\TotalSeconds}% Uses the number of seconds since the hour started


\foreach \QuizNumber in {1,...,\NumberOfQuizes} {%

%\clearpage% Start each quiz on a new page
\noindent\textbf{\Large Quiz Number \QuizNumber}%
\begin{enumerate}
\foreach \Topic in \ListOfTopics {%
    % Determine random question to use form list
    \pgfmathrandomitem{\RandomQuestion}{\Topic} 
    % The following should import the file named in \RandomQuestion
    \item Random Question from Topic='\Topic': 
        \textbf{\Large\RandomQuestion}%
}%
\end{enumerate}
}%

\end{document}

Dadurch ändern sich die Fragen: Passt es zu Ihren Anforderungen?

BEARBEITEN Es gab eine Zeile mit unnötigem Code – ich habe sie entfernt.

verwandte Informationen