티스토리 뷰
[자바] 랜덤 숫자 생성하기
자바에서는 기본적으로 랜덤 숫자를 생성하는 2가지 방법이 있다.
- double Math.random()
- java.util.Random class
: 그냥 간단하게 랜덤 숫자를 만들때에는 위의 Math.random()을 사용하면 좋지만, 함수 정의를 보면 알겠지만 synchronized를 이용한다. 멀티쓰레드 프로그램을 이용한다면 Math.random()을 자주 이용한다면 성능에 영향을 미칠수 밖에 없을 것이다.
: Math.random()은 0 ~ 1 사이의 double을 랜덤으로 생성한다. 범위에 맞게 수정해서 사용하면 된다.
함수의 설명에 나와있듯이 멀티쓰레드에서 보다 나은 성능을 위해서는 각 쓰레드 안에서 Random을 생성하는 것이 성능에 유리하다.
Random randomGenerator = new Random();
int randomInteger = randomGenerator.nextInt(100); //0 ~ 99 사이의 int를 랜덤으로 생성
int randomIntegerUniform = randomGenerator.nextInt(); // int를 랜덤으로 생성
long randomLongUniform = randomGenerator.nextLong(); // long을 랜덤으로 생성
double randomDouble = randomGenerator.nextDouble(); // 0.0 ~ 1.0 사이의 double을 랜덤으로 생성 (1.0은 안나옴)
float randomDouble = randomGenerator.nextFloat(); // 0.0 ~ 1.0 사이의 float를 랜덤으로 생성 (1.0은 안나옴)
boolean randomBoolean = randomGenerator.nextBoolean(); //true, false를 랜덤으로 생성
double randomGaussianDouble = randomGenerator.nextGaussian(); // 평균 0, 표준편차1의 분포에 따른 랜덤 double 생성
byte[] randomBytes = new byte[10];
randomGenerator.nextBytes(randomBytes); //randomBytes의 크기만큼 랜덤 바이트를 생성
위의 함수들을 각각 용도에 맞게 사용하면 된다.
만약 5 ~ 10 사이의 랜덤 수를 생성하고 싶다면 아래처럼 하면 된다.
int start = 5;
int end = 10;
double range = end - start + 1;
int randomInt5to10 = (int)(randomGenerator.nextDouble() * range + start);
0에서부터 0.9999999 까지 나오는 것을 고려해보면 위의 수식을 간단하게 이해할 수 있을 것이다.
끝.
- Total
- Today
- Yesterday
- ny-school
- 자바스크립트
- 뽐뿌
- 팁
- gre
- GX-10
- Python
- php
- HTML5 튜토리얼
- 탐론 17-50
- 서울
- 샷
- gae
- mini project
- 안드로이드 앱 개발 기초
- Writing
- TIP
- K100D
- java
- c++
- 삼식이
- 안드로이드
- Android
- 속깊은 자바스크립트 강좌
- HTML5
- google app engine
- 강좌
- lecture
- Javascript
- 사진
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |