728x90
# 배열로 로또번호 뽑기 (1) (tistory.com)
# 배열로 로또번호 뽑기 (1)
난수를 써서 로또번호 뽑기를 하려고한다. #include #include using namespace std; void main() { srand(unsigned(time(NULL))); int iNum[6] = {}; //중복없이 랜덤값 뽑기 iNum[0] = rand() % 45 + 1; for (int..
hyukee.tistory.com
앞의 방식은 중복된 수가 나올 수 가 있다.
따라서 배열에 1~45를 대입한 후, 배열의 순서를 섞어서 뽑는 방법을 생각해보았다.
다음은 그 코드이다.
#include <iostream>
#include <time.h>
using namespace std;
void main()
{
//난수 뽑기
int iNum[45] = {};
int iRd1 = 0, iTemp = 0;
for (int i = 0; i < 45; ++i)
{
iNum[i] = i + 1; // 배열에 1~45 초기화
}
srand(unsigned (time(NULL)));
for (int i = 0; i < 6; ++i) // 난수하나(0~44)의 값을 뽑고, iNum[0:5] 의 배열값을 iNum[난수]와 바꿔줌
// 그렇게 되면 iNum[0]에 iNum[난수]의 값이 들어가고, iNum[난수]에는 iNum[0]의 값이 들어가있음
{
iRd1 = rand() % 45; // 난수 추출
iTemp = iNum[i];
iNum[i] = iNum[iRd1];
iNum[iRd1] = iTemp; //두 배열의 위치를 바꾸어 주는 것
}
}
이는 전체적으로 순서를 섞어준 것은 아니다.
랜덤값을 두개 추출해서 배열의 모든 순서를 전체적으로 바꿔줄 수도 있지만,
어차피 원하는 것은 6개의 숫자이기 때문에, 이렇게 코드를 작성해도 무리는 없다.
위 코드는 배열중 랜덤으로 뽑은 다음에, 그 숫자를 맨 앞으로 보내주고, 또 랜덤으로 뽑은다음에 그 숫자를 두번째로 보내주고
이런 형식이다.
728x90
'끄적끄적 개발공부' 카테고리의 다른 글
# 2차원 배열 시계방향으로 회전하기 (0) | 2021.04.12 |
---|---|
#배열로 로또번호 뽑기(3) feat.bubblesort (0) | 2021.04.10 |
# 배열로 로또번호 뽑기 (1) (0) | 2021.04.10 |
# C++ 기초 입출력 (0) | 2021.04.07 |
# for문으로 *(별)을 출력하여 도형 만들기 (0) | 2021.04.05 |