📜  在Java中从 ArrayList 获取随机元素

📅  最后修改于: 2022-05-13 01:54:54.812000             🧑  作者: Mango

在Java中从 ArrayList 获取随机元素

ArrayList集合框架的一部分,存在于Java.util 包中。它为我们提供了Java中的动态数组。

从列表中生成随机数具有很好的实用价值

有多种方法可以从 ArrayList 中获取随机元素:

  1. 使用 Math.random()
  2. 使用 ArrayList Shuffle
  3. 使用 Random 类

方法 1:使用Math.random()

句法 :

public static double random()

返回 :
此方法返回大于或等于 0.0 且小于 1.0 的伪随机双精度值。

  • Math.random() 生成一个介于 0 和 1 之间的随机值。
  • 将此值与 ArrayList 的大小相乘,并仅取此值的整数部分。
  • 现在可以将执行上述步骤后生成的数字作为 ArrayList 的索引。
  • 使用 get() 方法使用上面生成的索引从 ArrayList 返回一个随机元素。

注意:每次调用 Math.random() 方法时,它都会生成一个新的随机值,但是 ArrayList 中元素的原始顺序不会受到干扰。

Java
// Java program for Getting Random Elements 
// from ArrayList using Math.random() function
  
import java.io.*;
import java.util.ArrayList;
class GFG {
    public static void main(String[] args)
    {
        // creating ArrayList
        ArrayList my_list = new ArrayList();
  
        // adding elements
        my_list.add(10);
        my_list.add(80);
        my_list.add(30);
        my_list.add(70);
        my_list.add(5);
        my_list.add(90);
        my_list.add(19);
        my_list.add(25);
  
        // loop to print elements at randonm
        for (int i = 0; i < my_list.size(); i++) 
        {
           // generating the index using Math.random()
            int index = (int)(Math.random() * my_list.size());
  
            System.out.println("Random Element is :"
                               + my_list.get(index));
        }
    }
}


Java
// Java program for Getting Random Elements 
// from ArrayList using Collections.shuffle()
  
import java.io.*;
import java.util.*;
import java.util.ArrayList;
class GFG {
    public static void main(String[] args)
    {
        // creating ArrayList
        ArrayList my_list = new ArrayList();
  
        // adding elements
        my_list.add(10);
        my_list.add(80);
        my_list.add(30);
        my_list.add(70);
        my_list.add(5);
        my_list.add(90);
        my_list.add(19);
        my_list.add(25);
  
        // using collections.shuffle to shuffle elements of
        // ArrayList
        Collections.shuffle(my_list);
  
        // using for each loop to print values at random
        System.out.println("Random values :");
        
        for (Integer random_values : my_list)
        {
            System.out.print(random_values + " ");
        }
    }
}


Java
// Java program for Getting Random Elements 
// from ArrayList using nextInt() function
  
import java.io.*;
import java.util.ArrayList;
import java.util.Random;
class GFG {
    public static void main(String[] args)
    {
        // creating ArrayList
        ArrayList my_list = new ArrayList();
  
        // adding elements
        my_list.add(10);
        my_list.add(80);
        my_list.add(30);
        my_list.add(70);
        my_list.add(5);
        my_list.add(90);
        my_list.add(19);
        my_list.add(25);
  
        // initializing random class
        Random random_method = new Random();
  
        // loop for generation random number
        for (int i = 0; i < my_list.size(); i++) 
        {
            // generating random index with the help of
            // nextInt() method
            int index = random_method.nextInt(my_list.size());
  
            System.out.println("Random Element is :"
                               + my_list.get(index));
        }
    }
}


输出
Random Element is :70
Random Element is :25
Random Element is :90
Random Element is :5
Random Element is :70
Random Element is :30
Random Element is :70
Random Element is :10

方法二:使用ArrayList Shuffle

  • Java的 Collections.shuffle() 方法打乱了 ArrayList 中元素的顺序。
  • 现在我们可以简单地遍历 ArrayList 并返回元素,因为它们现在以随机顺序排列。

 注意:实际的 ArrayList 本身打乱,原始排序丢失。

Java

// Java program for Getting Random Elements 
// from ArrayList using Collections.shuffle()
  
import java.io.*;
import java.util.*;
import java.util.ArrayList;
class GFG {
    public static void main(String[] args)
    {
        // creating ArrayList
        ArrayList my_list = new ArrayList();
  
        // adding elements
        my_list.add(10);
        my_list.add(80);
        my_list.add(30);
        my_list.add(70);
        my_list.add(5);
        my_list.add(90);
        my_list.add(19);
        my_list.add(25);
  
        // using collections.shuffle to shuffle elements of
        // ArrayList
        Collections.shuffle(my_list);
  
        // using for each loop to print values at random
        System.out.println("Random values :");
        
        for (Integer random_values : my_list)
        {
            System.out.print(random_values + " ");
        }
    }
}
输出
Random values :
19 5 25 90 10 30 80 70

方法 3:使用Random Class函数

  • Random 类的nextInt()方法可用于生成介于 0 和 ArrayList 大小之间的随机值。
  • 现在使用这个数字作为 ArrayList 的索引。
  • 使用 get() 方法使用 nextInt() 方法生成的数字从 ArrayList 返回一个随机元素。

注意: ArrayList 的原始顺序保持不变。

Java

// Java program for Getting Random Elements 
// from ArrayList using nextInt() function
  
import java.io.*;
import java.util.ArrayList;
import java.util.Random;
class GFG {
    public static void main(String[] args)
    {
        // creating ArrayList
        ArrayList my_list = new ArrayList();
  
        // adding elements
        my_list.add(10);
        my_list.add(80);
        my_list.add(30);
        my_list.add(70);
        my_list.add(5);
        my_list.add(90);
        my_list.add(19);
        my_list.add(25);
  
        // initializing random class
        Random random_method = new Random();
  
        // loop for generation random number
        for (int i = 0; i < my_list.size(); i++) 
        {
            // generating random index with the help of
            // nextInt() method
            int index = random_method.nextInt(my_list.size());
  
            System.out.println("Random Element is :"
                               + my_list.get(index));
        }
    }
}
输出
Random Element is :5
Random Element is :10
Random Element is :19
Random Element is :5
Random Element is :30
Random Element is :70
Random Element is :25
Random Element is :90