[Effective-Java] Chapter9 #59. 라이브러리를 익히고 사용하라
·
Reference/Effective-Java
📌 As-is static Random rnd = new Random(); static int random(int n){ return Math.abs(rnd.nextInt()) % n; } 0부터 n 사이의 무작위 정수를 생성하는 흔한 코드지만 3가지 문제점을 가지고 있다. 1️⃣ n이 그리 크지 않은 2의 제곱수라면 얼마 지나지 않아 같은 수열이 반복된다. 'Math.abs(rnd.nextInt())'는 int 범위 내에서 난수를 생성한다. 이후 '% n' 연산을 통해 0부터 n-1 까지의 범위에서 값을 생성한다. n이 2의 제곱수가 아니라면, n-1 이 'rnd.nextInt()' 결과를 균등하게 나누어주지 못한다. 따라서 random() 을 여러번 호출하면 n이 크지 않은 2의 제곱수일 경우, 동일..