Create a random quiz mode where every array part is only called once (Android Studio) : I'm a bit new to Android Studio and I want to make small quiz app. On the start screen there are two buttons. With the first button you just click through your questions and you can start at a specific question number if you want (this is already working). With the second button I wand to create a random mode BUT every question should only be asked once. So there should not be the possibility to get the same questions twice. 

For that I created an Array:

    public ArrayList<Integer> questionsDone = new ArrayList<>();

And got the lenght of the Question Array:

    public int maxQuestions = QuestionLibrary.nQuestions.length;

then I have a function for updating the question:

    private void updateQuestion(){

        //RANDOM MODE
        if (startNumber == -1) {
            if (questionsDone.size() >= maxQuestions) {
                finishQuiz();
            } else {
                nQuestionNumber = (int) (Math.random() * (maxQuestions));

                do {
                    if (questionsDone.contains(nQuestionNumber)) {
                        nQuestionNumber = nQuestionNumber - 1;
                        if (nQuestionNumber == -1) {
                            nQuestionNumber = maxQuestions-1;
                        }
                    } else {
                        questionsDone.add(nQuestionNumber);
                        notDone = true;
                    }

                } while (notDone = false);
            }
        }
        nQuestionView.setText(nQuestionLibrary.getQuestion(nQuestionNumber));
        nButtonChoice1.setText(nQuestionLibrary.getChoice1(nQuestionNumber));
        nButtonChoice2.setText(nQuestionLibrary.getChoice2(nQuestionNumber));
        nButtonChoice3.setText(nQuestionLibrary.getChoice3(nQuestionNumber));

So my idea was that when I start random mode, i pass the value "-1". If the size of the array (questions done) equals the number of the available questions the quiz should stop. If not, I just get a random number and multiply it with the number of questions. Then there is a do-while function which makes sure that if the questionsDone-Array already contains the number it will get a new number and after getting a number which is not in the array it will be stored in the array. 

This is what the app does when I click on random mode:

It always shows a random question but sometimes one questions is asked twice and more. And suddenly it stops (the app is loading the result page) but the stop does not come with a pattern. When I have 7 questions, every questions is minimum asked once and sometimes it stops afer 15, sometimes after 20 questions and so on.

Does someone know why?