BACKGROUND
Apologies in advance, but this question requires some context.
I'm working on a trivia app which has 600 questions in the database. Upon launching the app, the user is presented with a main menu from which they can select how many questions they want to answer. The options are 10, 25, 50, 100, 250, 500 and All.
After the user makes their selection they are taken to the Question screen where they get asked their questions. Questions appear randomly, selected from the pool of 600 questions.
Upon completion the user is taken to another screen summarising their results before returning to the main menu again.
Questions do not repeat, so the pool of questions becomes smaller as they're playing the game. E.g. if a user starts from scratch and has played four sets of 10 question games, the remaining pool of questions is now at 560. If they then select a 100 question game, the pool is reduced to 460. And on it goes.
THE PROBLEM
Eventually the pool of questions would be empty, and the app would crash.
To address this I intend to code the app to reset the database so they can continue. Resetting the database won't reset their score, it just reactivates all the questions so they can be randomly selected again (and therefore repeated).
If the app waits until all questions are asked before the reset, then it avoids repeating questions too soon/often, but then the 'reset' could occur in the middle of an active game. Therefore we'd have to present the user with a message and this is somewhat disruptive.
On the other hand, if it's done automatically at the end of each 'game', then we can avoid the user message and they won't even know the reset has occurred. However, the risk is that they'll see repeat questions too often (e.g. If they select a 25 Question game after which the database is reset, those 25 questions will be back in the pool and open to being selected again. It won't take long before users start seeing the same questions popping up again and again, and this in itself would be distracting.
QUESTION
From a user perspective when is it the best time to reset the database?