मेरे पास एक रैंडम पिकर कोड है जो 1 से 6 तक पूर्व के लिए यादृच्छिक संख्या चुनता है .. क्या आप मुझे एक तरीका दे सकते हैं कि यादृच्छिक पिक की सूची से चुने गए नंबर को कैसे बाहर किया जाए ..

import java.util.Random;

Random rand = new Random();

int  n = rand.nextInt(6) + 1;

जैसे कि पूर्व के लिए: 1.2.3.4.5.6 रैंडम पिक = 5 1.2.3.4.6 रैंडम पिक = 2 ​​1.3.4.6 .. आदि अग्रिम में लोग

0
user9887003 3 जून 2018, 07:14

2 जवाब

सबसे बढ़िया उत्तर

आप उन नंबरों को जोड़ सकते हैं जिन्हें पहले से ही एक ArrayList में चुना जा चुका है और एक नंबर तब तक चुन सकते हैं जब तक कि संख्या सूची में शामिल न हो।

// list of numbers that I already picked
ArrayList<Integer> randomNumbersPicked = new ArrayList<>();
// int to save the current random number
int myCurrentRandomNumber;

while(iNeedAnotherNumber){
    do {
        myCurrentRandomNumber = generateRandomNumber(a, b);
    //repeat this until the number is not in the list
    } while (randomNumbersPicked.contains(new Integer(myCurrentRandomNumber)));
    //here there is a unique random number, do what you will
    System.out.println("A new number has been picked: " + myCurrentRandomNumber);
    //add the number to the list so it wont be picked again
    randomNumbersPicked.add(new Integer(myCurrentRandomNumber));
}

सादर! Dknacht.

0
Dknacht 3 जून 2018, 07:39

सभी मान्य संख्याओं को एक ArrayList में रखें और इसके बजाय सूची से एक यादृच्छिक अनुक्रमणिका चुनें। फिर उस नंबर को सूची से हटा दें और दोहराएं।

मेरा जावा थोड़ा जंगली है, इसलिए उम्मीद है कि मैं जो कोड लिखता हूं वह समझ में आता है:

ArrayList<int> validOptions = /**/; // make your list with all initial options

int firstIndex = random.Next(validOptions.count());
int firstPick = validOptions.get(firstIndex);
validOptions.removeAt(firstIndex);

int secondIndex = random.Next(validOptions.count());
int secondPick = validOptions.get(secondIndex);
validOptions.removeAt(firstIndex);
0
Dean Johnson 3 जून 2018, 07:25