아마도 가장 중요한 차이점은 Unity Random.Range
가 정적이기 때문에 사용이 약간 더 쉽다는 것입니다. 그러나 C # 기본 클래스 라이브러리 System.Random
는 더 많은 제어 및 격리 기능을 제공합니다 .
그들은 또한 다른 실제 구현을 사용할 수도 있지만 (유니티 Random
가 시스템 측면에서 구현 된 Random
것 같지만) 주목할만한 관심사는 아닙니다. 기본적으로 그들은 같은 종류 의 난수 생성기 일 수 있습니다 : 일부 시드로 정의 된 시퀀스를 반복하는 의사 난수 생성기).
일부 상황에서는 다른 사물에 대해 다른 임의의 스트림을 사용할 수 있기 때문에 제어 문제가 더 관련이 있습니다. 예를 들어, 잠금 단계 네트워킹 네트워킹 컨텍스트에서 게임의 모든 플레이어에서 임의의 게임 플레이 영향 이벤트를 생성하는 데 사용되는 시드를 수정하려고 할 수 있지만 순수하게 사용되는 임의의 숫자 스트림에 대해서는 크게 신경 쓰지 않을 수 있습니다 시각적 이벤트를 통해 더 전통적인 방식으로 스트림을 시드 할 수 있습니다 (예 : 게임 시작시 시스템 가동 시간).
마찬가지로 여러 스레드에서 난수를 생성하려는 경우 경쟁 조건을 방지하기 위해 각 스레드마다 고유 한 임의의 개체를 사용할 수 있습니다. 예를 들어 게임 로직이 여러 스레드에서 실행되고 게임 플레이 리플레이 시스템이있는 경우이 문제가 발생할 수 있습니다.
결국, 일반적으로 하나를 사용하는 것이 더 낫지 는 않지만 오히려 장단점이 있습니다. 발생 가능한 다른 임의의 무작위 시퀀스에서 숫자 시퀀스를 분리해야하거나 시퀀스의 시드를 로컬로 제어해야하는 경우의 인스턴스를 사용하십시오 System.Random
. 버리기 용도 나 영향을받지 않는 다른 시나리오를 위해 빠르고 불규칙한 임의의 값이 필요한 경우 Unity의 단순화 된 Random
것이 좋습니다.