jeudi 4 avril 2019

Java - Selecting non-repeating random numbers in two runs without repeating the last from the first run

I have the following code:

public void generateRandomQuadrant() {
    currentMinute = FIRST_MIN;
    randomQuadrant = quadSelector.nextInt(4) + 1;
    while (randomQuadrant == lastQuadrant1
            || randomQuadrant == lastQuadrant2
            || randomQuadrant == lastQuadrant3
    ) {
        randomQuadrant = quadSelector.nextInt(4) + 1;
    }
    switch (quadrantCounter) {
        case 0:
            lastQuadrant1 = randomQuadrant;
            break;
        case 1:
            lastQuadrant2 = randomQuadrant;
            break;
        case 2:
            lastQuadrant3 = randomQuadrant;
            break;
        case 3:
            lastQuadrant4 = randomQuadrant;
            break;
    }
    quadrantCounter++;
}

public void generateRandomQuadrant2Min() {
    currentMinute = SECOND_MIN;
    randomQuadrant2Min = quadSelector.nextInt(4) + 1;
    while (randomQuadrant2Min == lastQuadrant4
            || randomQuadrant2Min == lastQuadrant5
            || randomQuadrant2Min == lastQuadrant6
            || randomQuadrant2Min == lastQuadrant7
    ) {
        randomQuadrant2Min = quadSelector.nextInt(4) + 1;
    }
    switch (quadrantCounter2Min) {
            case 0:
            lastQuadrant5 = randomQuadrant2Min;
            break;
        case 1:
            lastQuadrant6 = randomQuadrant2Min;
            break;
        case 2:
            lastQuadrant7 = randomQuadrant2Min;
            break;
        case 3:
            lastQuadrant8 = randomQuadrant2Min;
            break;
    }
    quadrantCounter2Min++;
}

Basically, I randomly select a quadrant in each minute without repeating them. However, when the second minute starts, that is where my problem is; I would like to start the process over again, but without repeating lastQuadrant4 in the first 15 minutes of the second run. Unfortunately, the second method runs in an infinite loop, bouncing around between quadrants.

Is there anything I am doing wrong here?




Aucun commentaire:

Enregistrer un commentaire