Java 从ArrayList中获取随机元素

Java 从ArrayList中获取随机元素

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

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

有多种方法可以从ArrayList中获得一个随机元素。

1. Using Math.random()
2. 使用ArrayList Shuffle
3. 使用随机类

方法1:使用 Math.random()

语法 :

public static double random()
Java

返回:
该方法返回一个大于或等于0.0且小于1.0的伪随机双数。

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

注意: 每次调用Math.random()方法都会产生一个新的随机值,但是ArrayList中元素的原始顺序并没有被打乱。

// 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<Integer> my_list = new ArrayList<Integer>();
  
        // 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

输出

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
Java

方法2:使用 ArrayList Shuffle

  • Java的Collections.shuffle()方法是对ArrayList中元素的顺序进行洗牌。
  • 现在我们可以简单地迭代ArrayList并返回元素,因为它们现在是以随机顺序排列。

实际的ArrayList本身会被洗牌,原来的排序会丢失。

// 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<Integer> my_list = new ArrayList<Integer>();
  
        // 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

输出

Random values :
19 5 25 90 10 30 80 70
Java

方法3:使用 随机类功能

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

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

// 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<Integer> my_list = new ArrayList<Integer>();
  
        // 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));
        }
    }
}
Java

输出

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
Java

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册