괴이한 랜덤수 문제

3310 단어 무작위 수
어제 검증 코드 상자를 쓰는 프로그램에서 나는 26개의 알파벳을 하나의 문자열로 조립한 다음에 무작위로 1에서 26개의 숫자를 추출한 다음에 문자열에서 이 문자를 추출해서 네 번을 연속으로 추출한다고 생각했다.
코드는 다음과 같습니다.
     string strCode = "ABCDEFHIGKLMNOPQRSTUYCYZ";
        System.Text.StringBuilder sb = new System.Text.StringBuilder();  
        for (int i = 0; i < 4; i++)
        {
            Random rom = new Random();
            int strNum = rom.Next(1, strCode.Length);
            char strArray = strCode[strNum];
            sb.Append(strArray);
        }
        Response.Write(sb);

나는 원래 이 코드가 사실 매우 간단하다고 생각했지만, 매우 혼란스러운 것은 나중에 보니, 매번 클릭할 때마다 네 개의 같은 값을 얻는 것을 발견하였다.본능적인 반응은 프로그램 자체가 틀렸는지 확인하고 인터럽트를 설정해 디버깅을 하는 것이다.
그러나 유감스럽게도 디버깅이 맞았습니다. 정확한 4자리의 랜덤수를 정확하게 출력할 수 있었습니다. 그러나 실행할 때마다 이상한 것이 나왔습니다. 똑같은 알파벳 네 개가 나왔고 매번 똑같았습니다.
나는 오랫동안 보았는데 갑자기 나를 아는 한 학우가 정의의 랜덤 수는 더 이상 안에 순환할 수 없고 밖에 두어야 한다고 말하는 것이 생각났다.그리고 나는 이 생각에 따라 다음과 같이 실현했다.

  
  
string strCode = " ABCDEFHIGKLMNOPQRSTUYCYZ " ;
System.Text.StringBuilder sb
= new System.Text.StringBuilder();  
     Random rom = new Random();
for ( int i = 0 ; i < 4 ; i ++ )
{

int strNum = rom.Next( 1 , strCode.Length);
char strArray = strCode[strNum];
sb.Append(strArray);
}
Response.Write(sb);

이러면 틀림없어!
사실, 지금까지도 나는 이 문제가 어디가 잘못되었는지 확실히 알 수가 없다.만약 누가 알고 있다면, 그래도 고수께서 저에게 해답을 주십시오. 저는 감격해 마지 않습니다.하지만 블로거들은 앞으로 이런 코드를 쓸 때 주의를 기울여야 한다고 조언한다.

좋은 웹페이지 즐겨찾기