2012-05-15 3 views
0

가능한 중복 :
class System.Random .. why not static?`Random`은 기본적으로 정적`Next` 메소드를 포함하지 않는 이유는 무엇입니까?

"Generated random numbers are always equal"에 이어, 궁금 해서요;

Random 클래스가 최소 및 최대 옵션 인 Next의 정적 메서드를 노출하지 않는 이유는 무엇입니까? 어리석은 질문처럼 들릴지 모르겠지만 경험상 10 번 중 9 번 시드를 명시 적으로 지정하지 않고 난수를 생성하고 싶습니까? 명백한 무언가를 놓치고 있습니까? 이유가 있습니까? 아니면 사실 내가 아직 발견하지 못했다고 설명하는 방법이 있습니까?

+0

이미 답변 됨 - http://stackoverflow.com/questions/4933823/class-system-random-why-not-static – dash

답변

6

이것은 바보 같은 질문처럼 들리 겠지만, 경험상, 10 번 중 9 번 시드를 명시 적으로 지정하지 않고 난수를 생성하고 싶습니다.

정적 방법을 사용해서는 안됩니다. 상태를 유지하는 인스턴스 메소드를 사용해야합니다. Next에 전화 할 때마다 Random의 새 인스턴스를 만들면 여러 번 연속해서 빠르게 호출하면 반복되는 숫자가 표시됩니다.

"난수의 출처"는 테스트 할 수 있도록 다른 모든 IMO - injectable과 같은 종속성으로 간주해야합니다. 물론 의존성 주입을 사용하지 않는다면이 인수는 적용되지 않을 수도 있지만 다른 문제가 발생합니다.

Random은 스레드로부터 안전하지 않으므로 스레드 당 하나의 인스턴스가 Random 일 것이 좋습니다.

자세한 내용과 코드 샘플을 보려면 article on random numbers을 참조하십시오.

+0

을 참조하십시오. 감사합니다. 멋진 기사 ... 책을 구입해야 할 수도 있습니다. – Richard

관련 문제