En este artículo, mostraremos la forma más eficiente de encontrar o elegir un elemento de la Lista. La idea básica para elegir un elemento de la lista es, primero generar un número que debe estar entre 0 y el tamaño de la lista.
1. Elemento aleatorio único
Primero, seleccionamos un índice aleatorio para usar el método Random.nextInt(intbound). En lugar de la clase Random, siempre puede usar el método estático Math.random() (el método random() genera un número entre 0 y 1) y lo multiplica por el tamaño de la lista.
Java
// Java program select a random element from array import java.util.ArrayList; import java.util.List; import java.util.Random; public class GFG { // Drive Function public static void main(String[] args) { // create a list of Integer type List<Integer> list = new ArrayList<>(); // add 5 element in ArrayList list.add(10); list.add(20); list.add(30); list.add(40); list.add(50); GFG obj = new GFG(); // take a random element from list and print them System.out.println(obj.getRandomElement(list)); } // Function select an element base on index // and return an element public int getRandomElement(List<Integer> list) { Random rand = new Random(); return list.get(rand.nextInt(list.size())); } }
30
2. Seleccione el índice aleatorio en un entorno multihilo
Cuando trabajamos con aplicaciones de subprocesos múltiples que utilizan la única instancia de clase aleatoria, puede resultar en elegir el mismo valor para cada proceso que accede a esta instancia. Por lo tanto, siempre podemos crear una nueva instancia por subproceso utilizando la clase ThreadLocalRandom.
Java
// Java program select a random element from List import java.util.ArrayList; import java.util.List; import java.util.concurrent.ThreadLocalRandom; public class GFG { // Drive Function public static void main(String[] args) { // create a list of Integer type List<Integer> list = new ArrayList<>(); // add 5 element in ArrayList list.add(10); list.add(20); list.add(30); list.add(40); list.add(50); GFG obj = new GFG(); // boundIndex to select in sub list int boundIndex = 3; // take a random element from list and print it System.out.println( obj.getRandomElement(list, boundIndex)); } // Function to select an element based on index and // return an element public int getRandomElement(List<Integer> list, int bound) { // ThreadLocalRandom generates an int type number return list.get( ThreadLocalRandom.current().nextInt(list.size()) % bound); } }
10
3. Seleccionar elementos aleatorios con elemento de lista de repeticiones
A veces queremos elegir algunos elementos de una lista. Entonces, primero sepa cuánto elemento queremos seleccionar, luego seleccionamos los elementos uno por uno, agregamos una nueva lista y la devolvemos. Nota: en este caso, un elemento puede seleccionarse muchas veces porque no eliminamos los elementos seleccionados, por lo que el tamaño de la lista sigue siendo el mismo.
Java
// Java program select a random element from List import java.util.ArrayList; import java.util.List; import java.util.Random; public class GFG { // Drive Function public static void main(String[] args) { // create a list of Integer type List<Integer> list = new ArrayList<>(); // add 5 element in ArrayList list.add(10); list.add(20); list.add(30); list.add(40); list.add(50); GFG obj = new GFG(); // boundIndex for select in sub list int numberOfElements = 3; // take a random element from list and print them System.out.println( obj.getRandomElement(list, numberOfElements)); } // Function select an element base on index and return // an element public List<Integer> getRandomElement(List<Integer> list, int totalItems) { Random rand = new Random(); // create a temporary list for storing // selected element List<Integer> newList = new ArrayList<>(); for (int i = 0; i < totalItems; i++) { // take a random index between 0 to size // of given List int randomIndex = rand.nextInt(list.size()); // add element in temporary list newList.add(list.get(randomIndex)); } return newList; } }
[40, 20, 40]
4. Seleccione elementos aleatorios sin elemento de lista de repeticiones
A veces queremos elegir algunos elementos de una lista. Entonces, primero asegúrese de cuánto elemento queremos seleccionar, luego seleccionamos los elementos uno por uno, agregamos una nueva lista y la devolvemos. Nota: en este caso, un elemento selecciona solo unos porque estamos eliminando los elementos seleccionados, por lo tanto, reduzca el tamaño de la lista también automáticamente por JVM.
Java
// Java program select a random element from List import java.util.ArrayList; import java.util.List; import java.util.Random; public class GFG { // Drive Function public static void main(String[] args) { // create a list of Integer type List<Integer> list = new ArrayList<>(); // add 5 element in ArrayList list.add(10); list.add(20); list.add(30); list.add(40); list.add(50); GFG obj = new GFG(); // boundIndex for select in sub list int numberOfElements = 3; // take a random element from list and print them System.out.println( obj.getRandomElement(list, numberOfElements)); } // Function select an element base on index and return // an element public List<Integer> getRandomElement(List<Integer> list, int totalItems) { Random rand = new Random(); // create a temporary list for storing // selected element List<Integer> newList = new ArrayList<>(); for (int i = 0; i < totalItems; i++) { // take a random index between 0 to size // of given List int randomIndex = rand.nextInt(list.size()); // add element in temporary list newList.add(list.get(randomIndex)); // Remove selected element from original list list.remove(randomIndex); } return newList; } }
[50, 10, 20]