배열에서 요소를 무작위로 선택하는 방법
정수 배열에서 무작위로 숫자를 선택하는 솔루션을 찾고 있습니다.
예를 들어 배열이 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 배열에서 난수를 선택하려는 경우 그렇게하는 방법을 정의 할 수 있습니다 (String array의 Random 요소에 있는 Source Avinash R ).
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.0
1.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
패키지 에서 가져옵니다 .
이 질문을보세요 :
Java의 특정 범위 내에서 임의의 정수를 생성하는 방법은 무엇입니까?
0에서 정수 길이-1까지 임의의 숫자를 생성하고 싶을 것입니다. 그런 다음 배열에서 int를 가져옵니다.
myArray[myRandomNumber];
Java는 java.util 패키지에 Random 클래스가 있습니다. 이를 사용하여 다음을 수행 할 수 있습니다.
Random rnd = new Random();
int randomNumberFromArray = array[rnd.nextInt(3)];
도움이 되었기를 바랍니다!
package workouts;
import java.util.Random;
/**
*
* @author Muthu
*/
public class RandomGenerator {
public static void main(String[] args) {
for(int i=0;i<5;i++){
rndFunc();
}
}
public static void rndFunc(){
int[]a= new int[]{1,2,3};
Random rnd= new Random();
System.out.println(a[rnd.nextInt(a.length)]);
}
}
이 방법을 시도해 볼 수도 있습니다 ..
public static <E> E[] pickRandom_(int n,E ...item) {
List<E> copy = Arrays.asList(item);
Collections.shuffle(copy);
if (copy.size() > n) {
return (E[]) copy.subList(0, n).toArray();
} else {
return (E[]) copy.toArray();
}
}
package io.github.baijifeilong.tmp;
import java.util.concurrent.ThreadLocalRandom;
import java.util.stream.Stream;
/**
* Created by BaiJiFeiLong@gmail.com at 2019/1/3 下午7:34
*/
public class Bar {
public static void main(String[] args) {
Stream.generate(() -> null).limit(10).forEach($ -> {
System.out.println(new String[]{"hello", "world"}[ThreadLocalRandom.current().nextInt(2)]);
});
}
}
참고 URL : https://stackoverflow.com/questions/8065532/how-to-randomly-pick-an-element-from-an-array
'IT TIP' 카테고리의 다른 글
GAC에서 .NET DLL 파일을 어떻게 등록합니까? (0) | 2020.10.13 |
---|---|
기본 사용자 이름 및 비밀번호 인증으로 squid 프록시를 설정하는 방법은 무엇입니까? (0) | 2020.10.13 |
jQuery $ .ajax를 통해 JavaScript 배열을 PHP로 전달 (0) | 2020.10.13 |
멤버 함수에 대한 함수 포인터 (0) | 2020.10.13 |
jquery에서 href를 업데이트 (추가)하는 방법은 무엇입니까? (0) | 2020.10.13 |