Seleccione aleatoriamente elementos de una Lista en Java

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()));
    }
}
Producción

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);
    }
}
Producción

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;
    }
}
Producción

[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;
    }
}
Producción

[50, 10, 20]

Publicación traducida automáticamente

Artículo escrito por Rajput-Ji y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *