Study for Backend/Programming language - Java

[Java기초] Random 클래스 관련

지미니박 2024. 2. 7. 23:12

Java.util.Random()
- Random 클래스는 난수를 생성하는 클래스로 객체를 생성하여 사용한다.

- 매번 다른 시드 값을 사용하여 의사 난수를 생성.
- 메서드를 호출할 때 인자로 최대값을 전달하면 0부터 최대값 -1까지의 범위 내에서 난수를 생성.
- 난수 생성 알고리즘은 선형 합동 생성기(Linear Congruential Generator, LCG).

Math.random과 Random의 차이점
- Random 클래스는 객체를 생성 하고 난수를 발생 계산하는 방식이지만
Math.random()은 Math클래스의 static 메소드여서 객체의 생성없이 바로 호출할 수 있다.


- Random클래스는 정수,실수 타입의 난수를 생성 할 수 있다.(int,long,float,double)
Math.random은 0 < 값 < 1을 반환한다. ( ex = 0.9491987276149608 )


- Random클래스는 보안적인 측면에서 안전하게 난수를 생성할 수 있도록 설계되었다.


- 시드값 지정, SecureRandom 를 객체로 전달해 난수를 생성하는 등의 방식이 있지만
Math.Random은 단순히 Random클래스의 LCG 알고리즘을 활용하기 때문에. 결국 예측이 가능해진다.

 

 

link 

https://velog.io/@disdos0928/Random-Class%EB%8A%94-%EC%96%B4%EB%96%BB%EA%B2%8C-%EB%82%9C%EC%88%98%EB%A5%BC-%EC%83%9D%EC%84%B1%ED%95%A0%EA%B9%8C

 

velog

 

velog.io

https://coding-factory.tistory.com/530#google_vignette

 

[Java] 자바 난수(랜덤 숫자) 생성하기 (Math, Random)

자바에서 난수를 얻어내는 방법은 Random클래스를 활용하는 방법과 Math클래스를 활용하는 방법 2가지가 있습니다. 두 방법의 차이점은 Math.random() 메소드는 0.0에서 1사이의 double 난수를 얻는데만

coding-factory.tistory.com