JAVA
[ java ] Random, Math.Random
Adose
2024. 12. 5. 16:40
📌 Math.radom()
❓최상위 클래스인 Object 클래스 안에 있으므로 Import 시켜주지 않아도 사용이 가능하다.
- 0.0 이상 1.0 미만의 double형 난수를 생성한다.
- 시드(seed) 값을 직접 설정할 수 없다.
- 시드 값이란 생성 초기 값으로, 생성 시작점을 말한다.
- Math.Random() 시드 값은 현재 시간을 사용한다.
- double형이 return 되기 때문에, 정수 사용을 위해서는 원하는 정수 크기 만큼 곱셈을 해주어야 한다.
1. (int)(Math.random()*10) //0~9사이 정수
2. (int)(Math.random()*10000)%10 //0~9사이 정수
//1번 사용을 더 권장
❗ (int) 캐스팅은 소수점을 반올림하지 않고 버린다.
📌 Random()
❓ java.util.Random 클래스에서 제공한다. import를 해야 사용이 가능하다.
- 시드(seed) 값을 직접 설정할 수 있다.
- 정수, 소수, 논리값 등의 랜덤값을 설정할 수 있다.
- startindex를 설정하지 않으면 0 ~ bound-1 사이의 정수를 생성한다.
- startindex ~ endindex-1 사이의 정수를 생성한다.
- 설정한 값 포함하지 않음 (= bound 포함하지 않음)
random.nextInt(10); //0~9 사이의 정수
random.nextInt(1, 10); //1 ~ 9 사이의 정수
Random() 메서드 설명
nextInt() | 0 ~ bound-1 사이 정수 | |
nextDouble() | 0.0 ~ 1.0 미만 정수 | nextDouble(1,50) // 1.0 이상 50.0 미만 |
nextBoolean() | true 또는 false |
❓ startIndex를 지정하지 않을때 왜 0으로 시작할까 ? (Ex. nextInt(10) )
- 반열림 범위가 더 실용적이기 때문 !
- 계산이 편리하다
- max값을 포함하지 않아 오류를 방지할 수 있다.
- 배열이나 리스트의 인덱스가 0부터 시작하기 때문에 자연스럽게 0부터 시작 하도록 설계 됐다는 말도 있다.
- 반열림 범위
- 반열림 범위는 min(시작값)은 포함되지만 max(종료값)는 포함되지 않는다.
- max - min 으로만 계산 가능 (계산 편리)
- [1 ,10 ) → 10 -1 = 9
- 닫힌 범위
- 닫힌 범위는 min(시작값), max(종료값)를 둘다 포함하는 것이다.
- max - min +1 로 계산해야 한다.
- [1, 10] → 10 -1 +1 = 10