안드로이드 Java 난수 발생 시키기_Random Number

1. 개요

안드로이드 개인 프로젝트를 진행 도중 난수 생성이 필요하여 정리를 합니다.

최근 안드로이드 개발은 코틀린을 사용하는 것이 대세인 듯합니다.

하지만 저는 프로젝트를 빠르게 진행하기 위해 저에겐 조금 더 익숙한 Java를 사용하여

안드로이드 프로젝트를 진행하고 있습니다.

 

각설하고, 안드로이드에 내장된 Java에서 난수 생성을 하는 방법은 2가지 방법이 있습니다.

Java.lang.Math 클래스를 사용하는 방법과

Java.util.Random 클래스를 사용하는 방법입니다.

두 방법에 사용법에 대하여 알아보고, 차이점에 대해서도 정리해 보도록 하겠습니다.

 

*이번 글에서 사용한 예제는 0부터 9까지 숫자에서 랜덤 하게 정수를 생성하는 방법을 다룹니다.

 

2. Math class를 이용한 난수 생성

Math.random() 메서드를 이용한 난수 생성 방법입니다.

Math 함수는 lang 클래스에 포함되어 있기 때문에 따로 import할 필요는 없습니다.

 

Math.random() 메서드는 0.0 ~ 1.0 의 범위를 갖는 double 값 난수를 반환합니다.

여기에 10을 곱하여 0부터 9까지 숫자에서 랜덤 한 정수를 생성하는 코드를 첨부합니다.

int randomNum = (int) (Math.random() * 10);

 

3. Random class를 이용한 난수 생성

java.util.Random 클래스를 import 하여야 합니다.

말이 거창하지 alt+enter면 요즘 안드로이드 스튜디오에서는 자동으로 import 됩니다.

 

long 타입의 seed값을 생성자로 하며, seed값을 입력하지 않으면 

현재 시스템 시간을 seed값으로 갖습니다.

 

마찬가지로 0부터 9까지 숫자에서 랜덤 한 정수를 생성하는 코드를 첨부합니다.

int max_num_value = 9;
int min_num_value = 0;

Random random = new Random();

int randomNum = random.nextInt(max_num_value - min_num_value + 1) + min_num_value;

random.nextInt(value) 함수는  0 ~ (value -1)  사이 값의 난수를 생성해줍니다.

 

이외의 nextLong(), nextFloat(), nextDouble(), nextBoolean() 메서드도 활용하면

편하게 다른 타입의 난수 생성이 가능합니다.  

 

4. 기타

두 가지 방식의 난수 생성을 알아보았는데

seed를 초기화해줘야 하는 C++ 보다는 더 간단하게 난수 생성이 가능해서 편리하다는 생각이 듭니다.

 

두 방식 모두 사용하여도 상관없지만, 특별한 이유가 없다면 Random class를 이용하는 것이 조금 더 편해 보입니다.

 

문의 사항이나 오류 & 기타 질문은 댓글로 남겨주세요!! 바로 반영하겠습니다.

 

X. 참고

https://community.oracle.com/message/6596485

https://docs.oracle.com/javase/8/docs/api/java/util/Random.html

댓글

Designed by JB FACTORY