C # Random.Next-상한을 반환하지 않습니까?
random.Next(0,5)
5는 반환하지 않지만 때로는 0을 반환합니다. 이유는 무엇입니까? 반환 할 수있는 경계 값일 뿐이라고 생각했습니다. 감사
maxValue상기의 상한선을위한 Next()방법은 배타적 년 - 범위를 포함하는 minValue, maxValue-1그리고 그 사이의 모든 번호.
문서는 상한 (가) 독점 말한다. 독점은 가능한 반환 세트에 포함되지 않음을 의미합니다. 0 <= x < 5이 경우 더 수학적 표기법 입니다.
문서에서 바로 :
Summary:
Returns a random number within a specified range.
Parameters:
minValue:
The inclusive lower bound of the random number returned.
maxValue:
The exclusive upper bound of the random number returned. maxValue must be
greater than or equal to minValue.
Returns:
A 32-bit signed integer greater than or equal to minValue and less than maxValue;
that is, the range of return values includes minValue but not maxValue. If
minValue equals maxValue, minValue is returned.
매개 변수를 살펴보면 minValue포괄적이고 (이것이 0이 발생하는 이유) maxValue배타적 (5가 발생하지 않음 )임을 알 수 있습니다 .
기억하는 좋은 방법은 max를 난수를 취하는 숫자의 양으로 간주하는 것입니다. 따라서 random.Next(0,2)0 : 0 및 1에서 시작하는 2 개의 숫자에서 무작위로 가져옵니다.
이것은 오래전에 쓰여졌지만 어쨌든 나는 언급 할 것이다. 그 디자인 결정의 주된 이유는 핵심에있는 모든 난수 생성기가 0에서 2 ^ 32-1까지의 숫자를 생성하기 때문이라고 생각합니다. 따라서 Int32.MaxValue를 지정하면 해당 숫자를 얻을 수 없습니다. 하나의 숫자에 대한 예외는 디자이너에게 허용되지 않았을 것이므로 브래킷을 독점적으로 사용하기로 결정했습니다. 문제 해결됨!
Google에서 "c # random"을 찾고 원하는 방법에 대한 첫 번째 링크를 따라 가면 http://msdn.microsoft.com/en-us/library/aa329893(v=vs.71). aspx
그리고 상한선의 배타성에 대한 힌트가 없습니다. 그들은 코드에서 실수를 발견하고 문서로 수정했을 것입니다.
따라서 문서를 볼 때 항상 프레임 워크의 버전을 확인하는 것이 중요합니다. 이전 버전의 프레임 워크로 작업하는 경우에도 최신 문서를 살펴볼 가치가 있습니다.
참고 URL : https://stackoverflow.com/questions/5063269/c-sharp-random-next-never-returns-the-upper-bound
'IT Share you' 카테고리의 다른 글
| git pull 및 git push에 대한 다른 기본 원격 (추적 분기) (0) | 2020.12.10 |
|---|---|
| JDBC로 일괄 INSERTS를 수행하는 효율적인 방법 (0) | 2020.12.10 |
| jquery로 Enter 키를 눌렀는지 감지 (0) | 2020.12.10 |
| Backbone에서 뷰 믹스 인을 수행하는 적절한 방법 (0) | 2020.12.10 |
| Jquery each-루프 중지 및 객체 반환 (0) | 2020.12.10 |