2013-08-17 2 views
0

여러 번 물어 보지만 모든 것이 다른 질문과 섞여있어 이해하기 어렵습니다. 그러나 Math.random을 사용하여 0-10에서 임의의 숫자를 얻고 싶습니다.특정 범위의 난수를 얻는 방법

사실 난수가 목록의 색인 번호로 사용됩니다.

내가 지금까지했던 어떤 :

Random r=new Random(); 
int myInt=r.nextInt(11); 

및 재사용을 사용, 의견에 따라,

int myInt=new Random().nextInt(11); 

또는 :

int random = Math.random(0,9); // Obviously does not work 
+1

그것은 나쁜 질문이 아닙니다 ... API가 혼란 스럽기 때문에 주로 여러 번 묻습니다. Math는 noobs (한 번에 나 포함)가 찾은 따라서 임의의 숫자를 생성하는 부분적인 해결책을 제공하므로 혼란 스럽습니다. 이 문제에 대한 좋은 해결책을 찾는 것을 멈추십시오 ... 그래서 전문가들은 다시, 또 다시, 또 다시 묻습니다. 고액 지급 전문가 API 디자이너가 아닌 멍청한 탓! – corlettk

답변

1

대신 Math.random() 사용 Random#nextInt()를 사용하지 마십시오 필요에 따라 r.

+0

임의의 객체를 만들고 그 중 하나의 객체 만 가져 오면 진정한 난수가 생성되지 않습니다. –

+0

@LeeDanielCrocker 하나의 번호 만 생성되면 충분해야합니다. – hexafraction

5

Random 개체를 만들고 nextInt을 호출하면 int이 0에서 입력 된 숫자 (제외 값) 사이에 있습니다.

Random rnd = new Random(); 
int random = rnd.nextInt(11); // returns range 0-10 

(포함) 사이의 의사, 균일하게 분포 된 int 값을 돌려줍니다 (독점) 지정된 값이

+1

참고 : 실제로 무작위 값을 얻을 때마다 임의 인스턴스의 새 인스턴스를 가져올 필요가 없으며 "무의미한 과도한 쓰레기"가 발생할 수 있습니다. 그냥 말해. – corlettk

+1

'필요 없음'뿐만 아니라 그렇게하는 것이 절대적으로 잘못되었습니다. 모든 호출에 대해 개체를 다시 만들면 숫자가 전혀 무작위가되지 않습니다. –

1

사용하여 (어떤를 java.util.List에서 임의의 항목을 얻으려면 제네릭) 얻을 :

경고 : 다음 코드는 테스트하지 않았습니다.

package forums; 

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

public final class ListHelper<T> 
{ 
    private static final Random RANDOM = new Random(); 

    public T getRandom(List<T> list) { 
     return list.get(RANDOM.nextInt(list.size())); 
    } 
} 

... 또는 당신은 정적 될 수있는 비 제네릭 솔루션을 선호하지만, 당신이

package forums; 

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

public final class Lists 
{ 
    private static final Random RANDOM = new Random(); 

    public static Object getRandom(List list) { 
     return list.get(RANDOM.nextInt(list.size())); 
    } 
} 

건배를 호출 (사방)마다 getRandom의 결과를 캐스트하도록 요구 할 수있다 . 키이스.

관련 문제