2012-10-05 2 views
2

저는 Java에 매우 익숙합니다. 그래서 이것은 대부분의 사람들에게 너무 쉬운 것처럼 보일 수 있습니다. 제 질문은 주어진 배열에서 무작위로 선택된 이름을 반환하는 selectRandom(String[] names), 메서드를 작성하는 방법입니다.임의의 문자열을 반환하는 방법 Arrray Java

각 이름은 동일한 확률로 선택되어야합니다.

public static String selectRandom(String[] names)  
{  
    String num = names[0]; 
    int[]newArray = new int[names.length]; 
    for(int i =0; i<names.length;i++) 
    { 
     Random r = new Random(); 
     int ranNum= r.nextInt(names.length)+1; 
     num = names[ranNum]; 
    } 
    return num; 
} 
+1

루프가 필요하지 않습니다. 무작위 색인을 선택하고 해당 문자열을 반환하면됩니다. – Shashwat

+0

단계 : 배열 길이보다 작은 숫자를 무작위로 선택하고 배열 요소를 반환 하시겠습니까? 이것을 코드로 변환 할 수 있습니까? – nhahtdh

+1

나는 여기서 주요한 문제는 무작위로 얻는 방법이 아니라고 생각한다. OP가 언급했기 때문에 ** 각 이름은 동등한 확률로 선택되어야합니다. ** 나는 그가 균일 한 랜덤 함수가 필요하다고 생각합니다. 난 자바 코어 라이브러리 무작위가 제복이라고 생각하지 않습니다. – Kent

답변

4
public static String selectRandom(String[] names)  
{  
     Random r = new Random(); 
     int ranNum= r.nextInt(names.length); 
     return names[ranNum]; 

} 

당신은 당신의 방법 내부 코드의 대부분을 필요가 없습니다. 어쩌면 이런 식으로 시도해야할까요?

+5

'names'가 비어 있으면 작동하지 않습니다. – Vulcan

+0

NullPointerException도 생성 될 수 있습니다. –

+0

@Russell Gutierrez 배열에서 임의의 문자열 값을 선택하는 방법과 매번 다른 문자열을 원한다는 것을 알려주실 수 있습니까? 같은 문자열 값을 반복하고 싶지 않다면이 코드에서 필요한 수정이 무엇인지 알 수 있습니다. – Kunu

5

배열 크기까지 임의의 숫자를 생성하고 해당 색인에서 값을 얻을 수 있습니다.

public static String selectRandom(String[] names) { 
    if (name != null && names.length > 0) { 
     Random r = new Random(); 
     return names[r.nextInt(names.length)]; 
    } 
    return null; 
} 
+0

또한 null을 추가해야합니다. 그렇지 않으면'if (names.length> 0)'이 nullpointer 예외를 채울 수 있습니다. –

+0

+1 이제 자세히 보입니다. –

+0

@ Vulcan 배열에서 임의의 문자열 값을 선택하는 방법과 매번 다른 문자열을 원한다는 것을 알려주실 수 있습니까? 같은 문자열 값을 반복하고 싶지 않다면이 코드에서 필요한 수정이 무엇인지 알 수 있습니다. – Kunu

0

임의로 색인을 선택하고 해당 Stringnames에 반환하십시오. Java에서 난수를 얻으려면 Random 클래스가 있습니다. 또한 nextInt 방법을 확인하십시오.

public static String selectRandom(String[] names)  
{  
    Random rand = new Random(); 
    int index = rand.nextInt(names.length); 
    return names[index]; 
} 
관련 문제