<

지난번에 C++를 이용하여 로또(6/45) 번호를 생성하는 코드를 작성해봤는데 이번에는 C#을 이용하여 작성해봤다.


2019/03/29 - [Programming] - [C++] 로또 번호 생성 코드 (rand, list)



코드는 여타 로또 번호 생성하는 코드와 비슷하게 Rand함수를 이용한다.


C++ 이든 C#이든 Rand함수를 이용할 때 시드값(Seed)을 넣어줘야만 난수 생성시 중복되는 경우를 줄일 수 있다.


코드는 아래와 같다.


        private List GetLotteryNumber()
        {
            int nNum = 0;
            List listLottery = new List();
            for (int i = 0; i < LOTTONUM; i++)
            {
                Random rand = new Random(((int)DateTime.Now.Ticks) + i);
                nNum = rand.Next(1, 45);
 
                if(!listLottery.Contains(nNum))
                    listLottery.Add(nNum);
                else{
                    i--;
                    continue;
                }
            }
            return listLottery;
        } 


GetLotteryNumber 함수의 리턴값 타입으로 List를 이용했는데 이건 내가 쓰기 편해서 List를 이용했다.

더 쉬운 방법으로 배열을 이용하면 된다.

Random함수를 통해 난수를 1부터 45까지의 난수를 생성하여 중복된 값인지 체크하고 중복값이라면 반복문을 한스텝 빼주고 continue로 처리했다.


C#을 쓰면서 매번 느끼는 사실이지만, C++에 비해 개발 소요시간이 매우 단축된다는 것이다.


C++로 디렉토리 내 파일검색 메소드를 작성하려면 보통 20 라인으로 작성할 수 있다.


그런데 C#으로는 단 한줄로 디렉토리 내 모든 파일 목록을 가져올 수 있다.


심지어, 확장자 지정, 하위디렉토리 검색도 한번에 할 수 있다!


코드도 매우 간결하고, C++에서의 귀찮은 재귀함수 고려도 필요없었다.


        public string[] GetSearchFile(String _strPath)
        {
            string[] files = { "", };
            try
            {
                files = Directory.GetFiles(_strPath, "*.*", SearchOption.AllDirectories);
                
            }
            catch(IOException ex)
            {
                MessageBox.Show(ex.Message);
            }
            return files;
        } 



프로그램을 짜다 보면 랜덤한 스트링을 사용해야 할 때가 간혹 있다.


보통 테스트를 할때 임의의 문자열 값이 필요할때가 그렇다.


C++ 로 짤때에는 char 배열에 a부터 z, 0부터 9 넣고

랜덤시드로 한개씩 찝어서 길이에 맞춰 스트링으로 만드는 함수를 사용했었다.



C#도 마찬가지로 비슷하게 작성해봤다.


        
private static Random random = new Random((int)DateTime.Now.Ticks & 0x0000FFFF); //랜덤 시드값

public static string RandomString(int _nLength = 12)
        {
            const string strPool = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";  //문자 생성 풀
            char[] chRandom = new char[_nLength];

            for (int i = 0; i < _nLength; i++ )
            {
                chRandom[i] = strPool[random.Next(strPool.Length)];
            }
            string strRet = new String(chRandom);   // char to string
            return strRet;
        }



  1. 2018.09.14 15:18

    비밀댓글입니다

+ Recent posts