Java如何添加一个排除某个数字的随机生成器?

Use*_*job 1 java random arraylist

假设我想生成从ArrayList中获取的随机数:(1,2,3,4,5,6,7,8,9,10)

随机生成器产生5.

列表更新 - AL:(1,2,3,4,6,7,8,9,10)

下一个随机数不能是5.


我正在编写一个从arraylist生成随机数的程序,一旦生成随机数,列表就会删除该数字,下一个随机生成的数字不能是该数字.

ArrayList<Integer> numsLeft = new ArrayList<Integer>(Arrays.asList(1,2,3,4,5,6,7,8,9,10));

  Random randomGenerator = new Random();

 int number = 0; 
 String cont;

 do
 {
 number = randomGenerator.nextInt(numsLeft.size()); 
 numsLeft.remove(number);

  System.out.println (number + " continue (y/n)");
  cont = (stdin.readLine());
 } 
 while (cont.equalsIgnoreCase("y"));      
Run Code Online (Sandbox Code Playgroud)

但我唯一可以做的就是减小尺寸......

http://docs.oracle.com/javase/7/docs/api/java/util/Random.html

Boh*_*ian 5

更简单的方法是简单地洗牌,然后使用洗牌顺序中的数字:

List<Integer> nums = new ArrayList<Integer>();
for (int i = 1; i < 11; i++)
    nums.add(i);
Collections.shuffle(nums);
Run Code Online (Sandbox Code Playgroud)

现在它们是随机排列的,只需逐个使用它们:

for (Integer i : nums) {
    // use i
}
Run Code Online (Sandbox Code Playgroud)