티스토리 뷰

Java 중복 없이 난수 생성

  • 특정 범위의 난수(Random Number)를 중복없이 생성해야 할 상황에 간편하게 구현을 할 수 있는 방법을 알아보게 되면서 공유하고 한다.

해결방법

ThreadLocalRandom 사용

  • 자바 8 이후로 Random클래스의 init() 메서드를 사용하여 distinct 옵션과 limit 옵션을 정한 IntStream을 얻을 수 있게 되었다.
ThreadLocalRandom.current().ints(0, 100).distinct().limit(5).forEach(System.out::println);

Collections.shuffle() 사용

  • list에 담긴 특정 범위의 수 들을 Collection.shuffle() 메서드를 사용하여 Random 하게 섞을 수 있습니다.
List<Integer> range = IntStream.range(0, 100).boxed()
        .collect(Collectors.toCollection(ArrayList::new));
Collections.shuffle(range);
range.subList(0, 99).forEach(System.out::println);

참고

 

Generating Unique Random Numbers in Java

I'm trying to get random numbers between 0 and 100. But I want them to be unique, not repeated in a sequence. For example if I got 5 numbers, they should be 82,12,53,64,32 and not 82,12,53,12,32 I ...

stackoverflow.com


끝으로

이 글이 도움이 되었다면, Google 광고 한번씩 클릭 부탁 드립니다. 🙏🙏🙏

광고 클릭은 많은 힘이 됩니다!

반응형
댓글