어제 엄청나게 멍청한 짓을 하고 헤맸다....
그게 바로 이 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만 나온다
나는 저 괄호를 못봐서...
활용도가 높지만 암호화 관련으로 사용하기엔 보안이 취약하다고 한다
그럼 다음 시간에 계속 .. .