Microsoft MVP성태의 닷넷 이야기
정말 황당한 경우입니다.. [링크 복사], [링크+제목 복사]
조회: 1157
글쓴 사람
김대훈
홈페이지
첨부 파일
 
너무나 황당한 일을 겪어서 질문을 드립니다...
로또를 생성해주는 메서드를 만들고
각각 출력해주는 프로그램을 만들었는데요

정말 어이없게도 CTRL+F5로 컴파일을 하면 numa 와 numb의 값이 똑같이 나옵니다
F10으로 한줄씩 실행하면 정상적으로 numa 와 numb는 다른값이 나오구요...

이런일이 있을수가 있는건지 궁금해요...
4개월 공부하면서 이런적은 처음이어서..질문드려요..



using System;

namespace lotto
{
    class Program
    {
        static void Main(string[] args)
        {
            int[] numa = CreateLottoA();
            int[] numb = CreateLottoB();

            foreach (var a in numa)
            {
                Console.WriteLine(a);
            }
            foreach (var b in numb)
            {
                Console.WriteLine(b);
            }
        }
        private static int[] CreateLottoA()
        {
            
            Random rnd = new Random();
            int[] num = new int[5];
            int number = 0;

            for (int i = 0; i < 5; i++)
            {
                number = rnd.Next(0, 46);
                if (Array.IndexOf(num, number) == -1)
                {
                    num[i] = number;
                    continue;
                }
                i--;
            }
            Array.Sort(num);
            return num;
        }
        private static int[] CreateLottoB()
        {

            Random rnd = new Random();
            int[] num = new int[5];
            int number = 0;

            for (int i = 0; i < 5; i++)
            {
                number = rnd.Next(0, 46);
                if (Array.IndexOf(num, number) == -1)
                {
                    num[i] = number;
                    continue;
                }
                i--;
            }
            Array.Sort(num);
            return num;
        }
    }
}




donaricano-btn



[최초 등록일: ]
[최종 수정일: 9/23/2019 ]


비밀번호

댓글 쓴 사람
 



2019-09-23 11시34분
Random의 기본 seed 값이 Environment.TickCount이기 때문이고, Random 타입 자체가 의사 난수를 생성하는 구조이기 때문에 seed가 같으면 난수 생성 배열도 같습니다. 중간에 아래와 같이 sleep을 주면 다르게 나올 것입니다.

            int[] numa = CreateLottoA();
            Thread.Sleep(16);
            int[] numb = CreateLottoB();

왜 16인지는 다음의 글을 참고하세요.

윈도우 운영체제의 시간 함수 (1) - GetTickCount와 timeGetTime의 차이점
; http://www.sysnet.pe.kr/2/0/11063

정성태
2019-09-23 12시51분
[김대훈] 와............그래서 그런거군요 ㅎㅎㅎㅎ 답변 감사드립니다.
[손님]

... 16  17  18  [19]  20  21  22  23  24  25  26  27  28  29  30  ...
NoWriterDateCnt.TitleFile(s)
4936무개1/3/20183202책 내용 인용하는 것에 관한 질문이있습니다. [1]파일 다운로드1
4935몬난아12/28/20174049IIS 및 ASP.NET 이 서버에서의 동작방식? [2]
4934Question12/26/20179446C# 해상도에 따른 자동 사이즈 조절방법이 궁금합니다. [3]
4933Kay12/15/20173441C# VS 버전 에러 질문 드립니다. [1]파일 다운로드1
4932정환나라12/13/20173051vs2013에서 빌드한 com 컨트롤 객체를 닷넷 2.0에서 사용하려 합니다 [4]
4931Arvid12/12/20174126Visual Studio 2012 c# using문 참조 에러 [5]파일 다운로드1
4929김성대12/8/20173216app.config에 관한질문입니다. [1]
4928김성대12/7/20173378SQL Server 설치에러에 대한 질문입니다. [1]파일 다운로드1
4926heyhey12/6/20173008[삭제] ContextSwitchDeadlock????
4925ho12/5/20173243[삭제] WebBrowser로 드롭박스 로그인 페이지 탐색 시 발생한 문제에 대해 질문 올립니다.파일 다운로드2
4924몽중언12/3/20173873C# 디버깅 모드에서만 DB Insert가 되는 현상 질의 [6]
4923고요한11/23/20173630파일 확장자에 연결된 프로그램을 등록하는 방법에 대한 질문입니다. [2]
4922박성훈11/23/20174771시작하세요! C# 7.1 학습 방법 [3]
4921초보개발자11/20/20172687[삭제] 폼 사이즈 질문드립니다.
4920Question11/19/20173458IEnumerable 의 "지연된 평가" 에 관하여 질문드립니다. [2]파일 다운로드1
4919mskim11/16/20173456Split()을 이용하여 문자 구분 시 구분문자도 같이 저장하는 방법이 있나요? [2]
4917ho11/16/20174084WPF XAML 트리거 관련해 문의 드립니다. [3]
4918ho11/16/20174622    답변글 [답변]: 예제 프로젝트 첨부합니다. [4]파일 다운로드2
4916필승11/11/20173925기본 웹 브라우저 체크는 어떻게 해야 하나요? [2]
4915필승11/10/20173402WebBrowser 컨트롤 소리 출력 문의 드립니다. [2]
4914Question11/10/20173832c# 버튼 이벤트에 관하여 질문드립니다. [2]
4913Arvid11/8/20174812Log4Net 라이브러리를 이용하여 특정 기간이 지났을 때 자동 로그 삭제 기능 구현 질문 드립니다! [2]
4912조범희11/8/20175096C# FTP 다운로드중 에러 발생.. [2]파일 다운로드1
4911필승11/6/20173619WebBrowser 컨트롤 사용법에 대해 궁금합니다. [2]
4910진우11/6/20173599람다 초보 질문 드립니다. [2]
4909필승11/5/20173897TextBox에 관해 질문 드립니다. [5]
... 16  17  18  [19]  20  21  22  23  24  25  26  27  28  29  30  ...