Рубрики
Без рубрики

Java: Возвращает случайный элемент из списка

– Java: Возвращает случайный элемент из списка

Обычно мы используем следующие способы генерации случайного числа в Java.

1. Тредлокалрандом (JDK 1.7)

//Generate number between 0-9
int index = ThreadLocalRandom.current().nextInt(10);	

2. Случайный()

//Generate number between 0-9
Random random = new Random();
int index = random.nextInt(10);

3. Математика.случайный()

//Generate number between 0-9
int index = (int)(Math.random()*10);

1. Для одного потока разница в производительности невелика, просто выберите все, что хотите.

2. Для нескольких потоков рекомендуется использовать Тредлокалрандом . Random является потокобезопасным, но если несколько потоков используют один и тот же экземпляр Random, это приводит к высокой конкуренции (несколько потоков продолжают получать доступ к одному и тому же методу генератора “случайных”) и снижает производительность. ThreadLocalRandom решает эту проблему, создавая случайный экземпляр для каждого потока.

Прочитайте это ThreadLocalRandom javadoc .

В этом уроке мы покажем вам, как использовать описанные выше методы для получения случайного элемента из списка.

1. ThreadLocalРандом

ThreadLocalRandom пример получения случайного элемента из списка массивов.

package com.mkyong;

import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.ThreadLocalRandom;

public class ThreadLocalRandomExample {

	public static void main(String[] args) {

		List list = new ArrayList();
		list.add(10);
		list.add(20);
		list.add(30);
		list.add(40);
		list.add(50);

		ThreadLocalRandomExample obj = new ThreadLocalRandomExample();
		for(int i = 0; i < 10; i++){
			System.out.println(obj.getRandomList(list));
		}
		
	}

	public int getRandomList(List list) {

	    //0-4
	    int index = ThreadLocalRandom.current().nextInt(list.size());		
	    System.out.println("\nIndex :" + index );
	    return list.get(index);
	    
	}
	
}

Выход. Результат будет отличаться при каждом выполнении программы.

Index :2
30

Index :4
50

Index :4
50

Index :3
40

Index :4
50

Index :0
10

Index :2
30

Index :1
20

Index :2
30

Index :4
50

2. Случайный()

Случайный пример получения случайного элемента из списка массивов.

package com.mkyong;

import java.util.ArrayList;
import java.util.List;
import java.util.Random;

public class RandomExample {

	private Random random = new Random();
	
	public static void main(String[] args) {

		List list = new ArrayList();
		list.add("Apple");
		list.add("Boy");
		list.add("Cat");
		list.add("Dog");
		list.add("Elephant");

		RandomExample obj = new RandomExample();
		for(int i = 0; i < 10; i++){
			System.out.println(obj.getRandomList(list));
		}
		
	}

	public String getRandomList(List list) {

	    //0-4
	    int index = random.nextInt(list.size());
	    System.out.println("\nIndex :" + index );
	    return list.get(index);
	    
	}
	
}

Выход

Index :3
Dog

Index :1
Boy

Index :2
Cat

Index :2
Cat

Index :4
Elephant

Index :1
Boy

Index :2
Cat

Index :0
Apple

Index :0
Apple

Index :3
Dog

3. Математика.случайный()

Math.random() пример получения случайного элемента из списка массивов.

package com.mkyong;

import java.util.ArrayList;
import java.util.List;

public class MathRandomExample {

	public static void main(String[] args) {

		List list = new ArrayList();
		list.add(10);
		list.add(20);
		list.add(30);
		list.add(40);
		list.add(50);

		MathRandomExample obj = new MathRandomExample();
		for(int i = 0; i < 10; i++){
			System.out.println(obj.getRandomList(list));
		}
		
	}

	public int getRandomList(List list) {

	    //Math.random() = greater than or equal to 0.0 and less than 1
            //0-4
	    int index = (int)(Math.random()*list.size());
	    System.out.println("\nIndex :" + index );
	    return list.get(index);
	    
	}
	
}

Рекомендации

  1. Параллельный случайный в Java SE 7
  2. Reddit: Избегайте Случайного. Используйте новый ThreadLocalRandom из Java 7
  3. Использование ThreadLocalRandom для генерации случайных чисел
  4. идентификатор текущей должности загружается через JS автор комментарии

Оригинал: “https://mkyong.com/java/java-return-a-random-item-from-a-list/”