Java 从随机选取器列表中排除数字

Java 从随机选取器列表中排除数字,java,android,game-development,Java,Android,Game Development,我有一个随机选取器代码,从1到6为ex选取随机数。。 你能给我一个从随机挑选的名单中排除挑选的号码的方法吗 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 .. 等 提前将所有有效数字放入ArrayList,然后从列表中选择一个随机索引。然后从列表中删除该号码并重复 我

我有一个随机选取器代码,从1到6为ex选取随机数。。 你能给我一个从随机挑选的名单中排除挑选的号码的方法吗

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 .. 等
提前将所有有效数字放入ArrayList,然后从列表中选择一个随机索引。然后从列表中删除该号码并重复

我的Java有点生疏,因此希望我编写的代码有意义:

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);

您可以将已拾取的数字添加到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.

你试过什么?只需将列表{1,2,3,4,5,6}随机洗牌,然后一次读取一个值。