자바 랜덤 함수를 사용한 (JAVA Random)무작위 난수 생성 방법


첫번째 방법은 Math 클래스의 random 메소드를 사용하는 방법입니다.

0~1 사이의 double형 난수를 리턴하여 *10을 해주고 int형으로 변환 후 a, b, c, d 라는 이름을 가진 int형 변수에 담아 출력하는 예제입니다.



두번째는 Random 클래스를 사용하는 방법입니다.

boolean nextBoolean() float nextFloat()등등 random.nextInt(100)을 입력하시면 0~100사이의 난수가 발생합니다.



소스

import java.util.Random;
 
public class h5bak_random {
    public static void main(String[] args) {
        int a = (int) (Math.random()*10);
        int b = (int) (Math.random()*10);
        int c = (int) (Math.random()*10);
        int d = (int) (Math.random()*10);
        int e = (int) (Math.random()*10);
        System.out.println(a+","+b+","+c+","+d+","+e);
         
        System.out.println("=========================");
         
        Random random = new Random();
        int f = random.nextInt(10);
        int g = random.nextInt(10);
        int h = random.nextInt(10);
        int i = random.nextInt(10);
        int j = random.nextInt(10);
         
        System.out.println(f+","+g+","+h+","+i+","+j);
    }
}



출력결과


Posted by 준콩ol 준콩ol

댓글을 달아 주세요

  1. 자바 초급생 2013.10.27 06:24  댓글주소  수정/삭제  댓글쓰기

    읽다 궁금한점이 있는데요...
    int a = (int) (Math.random()*10);

    int f = random.nextInt(10);
    의 다른점이 있나요?

    • 준콩ol 준콩ol 2013.10.27 18:33 신고  댓글주소  수정/삭제

      위의 Math.random()은 Math클래스의 random() 메서드를 사용한 것이고,
      아래의 random.nextInt() 방법은 Random 클래스를 사용한 예제입니다.
      Random 클래스를 사용하면 다양한 방법으로 난수값을 생성할 수 있습니다.
      예를들어 random.nextDouble(), random.nextFloat() 처럼 다양한 숫자 범위의 형태로 생성이 가능합니다.

      위의 방법이나 아래의 방법 모두 int형 난수를 int형 변수에 저장하는 소스입니다.

  2. 어려워... 2014.06.26 20:31  댓글주소  수정/삭제  댓글쓰기

    random 쓸때 *10 이렇게 뒤에 붙여주고 사용하는이유가 난수발생할때 10안에 숫자만 쓸수있게 붙여주는건가요??뒤에 *100이면 100안에 숫자이죠??

    • 준콩ol 준콩ol 2014.06.27 11:56 신고  댓글주소  수정/삭제

      double형 난수가 0.1, 0.2 ... 0.9 이렇게 결과가 나오는데
      여기에 10을 곱해주면 결과값은 1, 2, ... 9 와 같이 정수로 리턴이 되겠죠.
      만약 100 안의 난수를 반환하겠다 라고 한다면
      Random 클래스를 사용하여 범위를 지정하는게 간단합니다.

  3. 궁궁 2015.01.07 22:55  댓글주소  수정/삭제  댓글쓰기

    궁궁한점 질문 랜덤함수 값을 1.2 로만햇을때

    그니깐 랜덤으로 1 , 2 둘중 하나만 랜덤으로 한숫자만 나옵니다

    300번을 돌렷을때

    122121112122212111121222121121211...

    숫자가 이리게속 컴퓨터가 임의로 게속 나올때 패턴을 아는방법이 있나요?

    전부는 아니여도 300번중 단 10개라두 나올 숫자를 맞출수 있을런지요 불가능하나요?

  4. 윈도우맨 2015.11.05 12:18  댓글주소  수정/삭제  댓글쓰기

    Random random = new Random () ;
    int f = random.nextInt(100);

    일때
    0부터 100까지가아니라
    50부터 100까지로 할수있는 방법 없을까요?

    • 준콩ol 준콩ol 2015.11.05 13:18 신고  댓글주소  수정/삭제

      Random rand;
      int minNum, maxNum;
      int randomNum = rand.nextInt(maxNum - minNum + 1) + minNum;

      이 정도 식으로 구하면 어떨까요?
      0~100 사이의 랜덤 값을 산출 후
      50이라는 범위 시작값을 더해주면 될 것 같습니다.
      참고로 nextInt()는 최상위 값을 제외한 값으로 랜덤값이 산출이 되므로 1을 더해준 것입니다.

    • sadgsda 2016.06.22 06:58  댓글주소  수정/삭제

      이렇게 해보세요
      int p = (Math.random()<.5)?1:2;