[java] 배열에서 요소를 무작위로 선택하는 방법

정수 배열에서 무작위로 숫자를 선택하는 솔루션을 찾고 있습니다.

예를 들어 배열이 new int[]{1,2,3}있는데 어떻게 무작위로 숫자를 고를 수 있습니까?



답변

public static int getRandom(int[] array) {
    int rnd = new Random().nextInt(array.length);
    return array[rnd];
}


답변

임의 생성기를 사용하여 임의 인덱스를 생성하고 해당 인덱스의 요소를 반환 할 수 있습니다.

//initialization
Random generator = new Random();
int randomIndex = generator.nextInt(myArray.length);
return myArray[randomIndex];


답변

임의의 요소를 여러 번 가져 오려면 난수 생성기가 한 번만 초기화되도록해야합니다.

import java.util.Random;

public class RandArray {
    private int[] items = new int[]{1,2,3};

    private Random rand = new Random();

    public int getRandArrayElement(){
        return items[rand.nextInt(items.length)];
    }
}

예측 불가능해야하는 임의의 배열 요소를 선택 하는 경우 Random이 아닌 java.security.SecureRandom 을 사용해야합니다 . 이렇게하면 누군가가 마지막 몇 가지 선택을 안다면 다음 항목을 추측하는 데 이점이 없습니다.

제네릭을 사용하여 Object 배열에서 임의의 숫자를 선택하려는 경우 그렇게하는 방법을 정의 할 수 있습니다 (Source Avinash R in Random element from string array ) :

import java.util.Random;

public class RandArray {
    private static Random rand = new Random();

    private static <T> T randomFrom(T... items) {
         return items[rand.nextInt(items.length)];
    }
}


답변

사용 java.util.Random하여 0과 배열 길이 사이의 난수를 생성 한 random_number다음 난수를 사용하여 정수를 가져옵니다.array[random_number]


답변

Random 클래스를 사용하십시오 .

int getRandomNumber(int[] arr)
{
  return arr[(new Random()).nextInt(arr.length)];
}


답변

당신은 또한 사용할 수 있습니다

public static int getRandom(int[] array) {
    int rnd = (int)(Math.random()*array.length);
    return array[rnd];
}

Math.random()(포함)에서 (배타) double사이를 반환합니다.0.01.0

이것을 곱하면 array.length당신에게주는 double사이에 0.0(포함) 및 array.length(독점)

캐스트 int는 내림하여 0(포함)과 array.length-1(포함) 사이의 정수를 제공합니다.


답변

Java 8이 있으므로 다른 솔루션은 Stream API를 사용하는 것입니다.

new Random().ints(1, 500).limit(500).forEach(p -> System.out.println(list[p]));

어디는 1(포함) 생성 가장 낮은 INT이며, 500가장 높은 (전용)입니다. limit스트림의 길이가 500임을 의미합니다.

 int[] list = new int[] {1,2,3,4,5,6};
 new Random().ints(0, list.length).limit(10).forEach(p -> System.out.println(list[p])); 

무작위는 java.util패키지 에서 가져온 것 입니다.