본문 바로가기

Programming/Java

난수 사용 하기

자바에서 난수를 생성하는 방법은 두 가지가 있는데, 일단 저는 사용법을 바로 확인한 Random 클래스에 대해서 포스팅 하려고 해요.
  • 생성자
    Random()
    
    Random 클래스 객체를 생성
    Random(long seed)
    
    기본 생성자와 동일하나, 원하는 난수 발생 인자를 바탕으로 생성
    • 사용법
      // 그냥 만들기
      Random rInstance1 = new Random();
      
      // 특정한 난수 발생 인자를 넣기
      Random rInstance2 = new Random(12);
      
      // 시간으로 난수 발생 인자를 넣기
      Random rInstace3 = new Random(System.currentTimeMillis());
      
  • 메쏘드
    boolean
    
    nextBoolean()
    
    등분포하게 무작위 생성된 true, false중 하나를 반환한다.
    void
    
    nextBytes(byte[] bytes)
    
    등분포하게 무작위 생성된 byte 배열을 인자로 넣은 bytes에 넣어 준다.
    double
    
    nextDouble()
    
    등분포하게 무작위 생성된 [0.0, 1.0]의 실수(real number)를 반환한다.
    float
    
    nextFloat()
    
    등분포하게 무작위 생성된 [0.0, 1.0]의 소수를 반환한다.
    double
    
    nextGaussian()
    
    평균이 0.0이고 표준분포가 1.0인 가우시안 분포 하게 무작위 생성된 실수를 반환한다.
    int
    
    nextInt()
    
    등분포하게 무작위 생성된 정수를 반환한다.
    int
    
    nextInt(int n)
    
    등분포하게 무작위 생성된 [0, n-1]의 정수를 반환한다.
    long
    
    nextLong()
    
    등분포하게 무작위 생성된 긴 정수를 반환한다.
    	void
    
    setSeed(long seed)
    
    난수 발생인자를 seed로 다시 설정한다.

    숫자 범위 표기
    () : 초과, 미만
    [] : 이상, 이하
    (a, b) : a초과 ~ b미만 사이의 수치(a, b는 범위에 포함되지 않는 다는 뜻)
    [a, b] : a이상 ~ b이하 사이의 수치(a, b는 범위에 포함된다는 뜻)
    (a, b] : a초과 ~ b이하 사이의 수치(a는 범위 밖, b는 범위 포함이라는 뜻)
  • 실습과 결과
    import java.util.Random;
    
    public class main {
    	public static void main(String[] args) {
    		Random rInstance = new Random(System.currentTimeMillis());
    		
    		System.out.println("첫번째 테스트");
    		randomTest(rInstance);
    		
    		System.out.println("\n두번째 테스트");
    		randomTest(rInstance);
    		
    		System.out.println("\n세번째 테스트");
    		randomTest(rInstance);
    		
    		
    	}
    	
    	protected static void randomTest(Random rInstance)
    	{
    		System.out.println("boolean : "+rInstance.nextBoolean());
    		System.out.println("double : "+rInstance.nextDouble());
    		System.out.println("float : "+rInstance.nextFloat());
    		System.out.println("int : "+rInstance.nextInt());
    		System.out.println("int(5) : "+rInstance.nextInt(5));
    		System.out.println("long : "+rInstance.nextLong());
    	}
    }
    


    자바독에서의 설명에 int, double, long등 별도의 범위가 없는 메쏘드들은 해당 데이터 타입이 가지는 모든 범위를 의미하는 거 같군요! :D

    제가 원래 원노트에서 작업을 한 후에 "블로그 보내기"로 일단 보내놓고, 태그 정리한 후에 깔끔하게 정리해서 "발행" 까지 하는데.... table은 대관절 못올리겠네요-_-+++
    그냥 새로 텍스트에디터에서 작업한 후에 올리는 중이어요ㅠㅠㅠ

'Programming > Java' 카테고리의 다른 글

List  (0) 2011.06.24