Java - 如何从值数组中创建随机数

jud*_*ith 4 java random

在第一次迭代 - 我想从0..10创建一个随机数

这就是我实施它的方式 -

 int generator= (int)(Math.random() * (10));
Run Code Online (Sandbox Code Playgroud)

在第一次迭代中,我想创建另一个随机数,但没有其中一个值.例如,我想要没有数字4的随机数.只有1,2,3,5,6,7,8,9,0

当生成随机数时,如何从数字0..10中删除其中一个值?

Roh*_*ain 5

第一种方式: -

您还可以保留List所有数字.然后使用Collections.shuffleshuffle列表并获取第一个元素.并删除它.

    List<Integer> list = new ArrayList<Integer>();

    list.add(1); 
    list.add(4);
    list.add(2);
    list.add(3);
    System.out.println("Original List: " + list);

    Collections.shuffle(list);

    System.out.println("Shuffled List: " + list);
    int number1 = list.remove(0);  // Remove the first value
    System.out.println("Number removed: " + number1);

    Collections.shuffle(list);

    System.out.println("Shuffled List: " + list);
    number1 = list.remove(0);
    System.out.println("Number removed: " + number1);
Run Code Online (Sandbox Code Playgroud)

输出: -

Original List: [1, 4, 2, 3]
Shuffled List: [4, 3, 1, 2]
Number removed: 4
Shuffled List: [1, 3, 2]
Number removed: 1
Run Code Online (Sandbox Code Playgroud)

第二种方式: -

更好的办法是从生成随机数0size列表,并获得价值that index并将其取出.

int size = list.size();
Random random = new Random();

for (int i = 0; i < size; i++) {    
    int index = random.nextInt(list.size());
    int number1 = list.remove(index);
    System.out.println(number1);
}
Run Code Online (Sandbox Code Playgroud)

注意: - 如果要从生成中排除一组固定的数字,则可以在列表中包含这些数字.然后从您的列表中删除该列表的所有元素list of numbers.然后使用上述任何方法.