지이구
지구.log
지이구
전체 방문자
오늘
어제
  • 분류 전체보기 (89)
    • 프로그래밍언어 (25)
      • Java (12)
      • 자바스크립트 (12)
    • 웹 개발 (13)
      • HTML, CSS (4)
      • JSP (6)
      • API, Plugin (0)
      • 기타 (3)
    • 프레임워크 (20)
      • 스프링 (12)
      • Node.js (4)
      • 넥사크로 (4)
    • 데이터베이스 (6)
      • Oracle (3)
      • MySQL MariaDB (2)
    • 모바일 (1)
      • 안드로이드 (1)
      • iOS (0)
    • 운영체제 (3)
      • 리눅스 (3)
    • 연습 (12)
      • 프로그래머스 (12)
    • 자격증 (5)
      • 정보처리기사 (5)
    • 취미 (1)
      • 배경화면 (1)
반응형

블로그 메뉴

  • 홈

공지사항

인기 글

최근 댓글

최근 글

hELLO · Designed By 정상우.
지이구

지구.log

프로그래밍언어/Java

[Java] 범위 난수 생성 Math.random()

2022. 4. 13. 10:57

 

 

Math.random()을 썼는데 같은 수만 나온다???? 주의해야할 점.....

어제 엄청나게 멍청한 짓을 하고 헤맸다....

그게 바로 이 Math.random() 친구 ㅋㅋㅋ

​

​

🎨사용법

자바에서는 난수 생성을 위해 Math.random() 를 사용한다

사용법은 아래와 같다

 

int randNum1 = (int) (Math.random() * 10); // 0~10의 범위 중 랜덤으로 1개
int randNum2 = (int) (Math.random() * 899) + 100;// 100~999의 범위 중 랜덤으로 1개

 

Math.random()은 0이상 1미만 0.xxx.. 로 만들 수 있는 범위에서 랜덤인 값을 생성하는데

그 값에 원하는 범위의 최댓값을 곱해주어 랜덤 추출이 가능하다

​

randNum1의 경우 0~10의 범위 중 랜덤값을 뽑기 위해 10을 곱해주었고

randNum2의 경우 최솟값이 존재하는 100~999의 범위 중 랜덤값을 뽑기 위해 최대값-최소값 을 곱해주고 최소값을 더해주었다

풀어서 설명하면 (Math.random()*899) 랑 +100 이랑 나눠서 생각하면 된다

앞부분은 0~899의 범위를 잡아주었고 100을 더해줬으니 100~999의 범위가 되는 것이다

​

이 랜덤 난수를 사용해서 인증번호를 생성하기도 하고

배열에서 랜덤값을 꺼낼 때 랜덤 index를 생성하기도 좋다

​

​

​

​

🎨주의

사용할 때 주의해야할 점은 괄호의 위치이다

 

int randNum1 = (int) (Math.random() * 10);
int randNum2 = (int) Math.random() * 10 ;

위의 randNum1과 randNum2은 같은 방식으로 생성되지않는다

Math.random() * 10을 괄호로 묶어주지 않으면 Math.random()으로 생성된 0.xxxx..의 값을 (int)로 변환하여 0 * 10이 되어 계속 0만 나오게 된다

만약 같은 숫자만 계속 생성한다면 괄호를 안 씌운건 아닌지 확인해봐야한다

 

​

int randNum1 = (int) (Math.random() * 10) + 10;
int randNum2 = (int) Math.random() * 10 + 10;

이 예제는 10~20의 범위에서 랜덤 숫자를 생성하는데

randNum2의 경우 괄호를 해주지 않아 10만 나온다

​

​

 

나는 저 괄호를 못봐서...

​

​

​

 

활용도가 높지만 암호화 관련으로 사용하기엔 보안이 취약하다고 한다

​

​

그럼 다음 시간에 계속 .. .

728x90
반응형
    '프로그래밍언어/Java' 카테고리의 다른 글
    • [Java] 이미지(File)를 Base64로 변환하기
    • [Java/보안] 403, 404 등 응답 에러코드 노출 방지
    • [Java/보안] 에디터 XSS 방지하기 - Jsoup 사용법
    • [Java] 배열 선언 및 초기화 개념 - 완벽 정리
    지이구
    지이구
    풀스택 개발자를 목표로 성장중인 병아리 개발자입니다. #ENFJ #5년차 #웹개발자 #집사

    티스토리툴바