728x90
로또번호 셔플 예제입니다.
#include <iostream>
#include <stdlib.h> // random 헤더파일
#include <time.h> // time헤더파일
#include <unistd.h> //sleep을 위한 헤더파일
using namespace std; //namespace std선언
void shuffle();
void ShuffleOnce(int* firstNumber, int* secondNumber);
int main()
{
setbuf(stdout, NULL); // macOS에서 sleep을 줄때 버퍼를 없애기 위함
shuffle();
}
void shuffle()
{
// {배열의 선언과 초기화
int numbers[45] = {0,};
for(int i = 0; i< 45; i++)
{
numbers[i] = i+1;
} //배열의 선언과 초기화}
//{배열의 출력
printf("Shuffle 이전 \n");
for(int i=0; i<45; i++)
{
printf("%d ", numbers[i]);
}
//배열의 출력}
printf("\n\n");
srand(time(NULL)); // 랜덤값을 위한 srand
const int SHUFFLE_COUNT = 800; // 섞는횟수
// {셔플 로직
// ShuffleOnce(한번섞는 함수)를 여러번 돌려 많이 섞어주는 부분
for(int i=0;i<SHUFFLE_COUNT;i++)
{
int randomIndex1 = rand() % 10;
int randomIndex2 = rand() % 10;
ShuffleOnce(&numbers[randomIndex1],&numbers[randomIndex2]);
} // 셔플 로직}
// {셔플 후 배열의 출력
printf("Shuffle 이후 \n");
for(int i=0; i<6; i++)
{
sleep(1);
printf("%d ", numbers[i]);
}
// 셔플 후 배열의 출력}
printf("\n\n");
}
// 주소값을 받아 배열을 한번 섞어주는 함수입니다.
void ShuffleOnce(int* firstNumber, int* secondNumber)
{
int temp = -1;
temp = *firstNumber;
*firstNumber = *secondNumber;
*secondNumber = temp;
}//ShuffleOnce
728x90
'프로그래밍 > C,C++' 카테고리의 다른 글
[C/C++] 예제_영어 문자열을 입력받아 대-소-대-소문자로 변경하기 (0) | 2023.06.07 |
---|---|
[C/C++] Swap 예제를 통해 포인터 맛보기 (0) | 2023.06.07 |
C++ 컴파일 과정 (0) | 2023.06.06 |
배열(array) 예제와 함께 가볍게 알아보기 (0) | 2023.06.05 |
형변환(type casting) (0) | 2023.06.05 |