반응형

지난번에 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로 처리했다.


반응형

심심해서 로또 번호 생성 코드를 짜봤다.


일단 로또번호는 1부터 45까지의 수에서 중복없이 6개로 이뤄진다.


그래서 rand함수로 번호를 뽑은다음, 중복값인지 체크하는 루틴도 있어야 한다.


배열 이용하는 방법이 가장 쉽고 간편하지만, 여기서는 STL 리스트를 이용해 본다.


#define LOTTONUM 6

	std::list listNum;
	srand((unsigned)time(NULL));
	int nNum = 0;
	listNum.clear();
	for (int i = 0; i < LOTTONUM; i++)
	{
		nNum = rand() % 45 + 1;

		if (std::find(listNum.begin(), listNum.end(), nNum) == listNum.end())
			listNum.push_back(nNum);
	}


+ Recent posts