본문 바로가기

c++ 공부기록

c++ 로또 만들기(배열)

야구게임 전에 이 글을 먼저 올려야 됬는데 ㅎㅎ

배열하면 로또 만들기가 빠질 수 없죠 ㅎㅎ

 

로또를 만들라고 하면 있어야 될 기능이 있죠

1. 1~45번까지 숫자

2.숫자를 중복되지 않고 랜덤으로 뿌리기

1번은 배열과 반복문을 이용하면 됩니다

2번은 특정 함수를 이용해야 하는데 srand()함수 입니다

자세한건 코드를 보시면 될겁니다

이해하기 쉽게 주석을 달았습니다

 

#include "pch.h"
#include  <iostream>
#include <time.h>//시간과 날짜를 얻거나 조작하는 함수를 포함: 랜덤 함수를 사용하기 위해

using namespace std;

int main()
{
int number[45] = {};//1~45까지의 수를 저장하기

for (int i = 0; i < 45; i++)
{
number[i] = i + 1;
}

srand((unsigned int)time(0));// 시드값을 설정해 새로운 난수를 뽑아내도록 함 그 시드값을 설정하는 함수가 srand()함수이다
//실행마다 새로운 시드값을 주는 쉬운 방법은 time()으로 srand()에 현재의 시간을 대입해 주는것
//unsigned란 프로그램에서 수를 표기하는 자료형의 특성,
//정수형과 같이 사용되어 부호 비트를 제거해 저장 가능한 양수 범위를 두배로 늘이는 역할을 한다

int x, y, t;
//인덱스를 랜덤으로 뽑아서 스왑만 하므로 중복된 값은 나오지 않음

for (int i = 0; i < 100; i++)//100번정도 섞어준다는 뜻
{
x = rand() % 45; // 이렇게 되면 램덤수 나머지 45를 했을떄 나올 수 있는 숫자는 0~44까지
y = rand() % 45;

//스왑
t = number[x];
number[x] = number[y];
number[y] = t;
}

//결과출력
for (int i = 0; i < 5; i++)
{
cout << (i + 1) << "번쨰 번호 : " << number[i] << endl;
}
cout << "보너스 번호 : " << number[5] << endl;

return 0;
}