• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

같은 숫자반복

20.02.24 12:25 작성 조회수 192

0

겹치는 숫자가 없게하기위해서 알려주신대로 shuffle과 swap을 이용했는데요, 같은 숫자가 나타나는 원인이 무엇일까요?

#include <iostream>

#include<time.h>

int main()

{

    using namespace std;

    //로또만들기

    //45개 수를 배열해놓고 6개랑 추가 숫자 1개를 가져다가 써야한다.

    //1~45까지의 '겹치지 않는' 수를 이용하기위해서는 조합의 개념으로 임의로 배열되어 잇는 상황에서 6개를 뽑는게 좋다.

    //일단45개를 배열해놓고 인덱스를 swap하면 이걸 반복하면 임의로 섞이면서 shuffle이 이루어진다.

    int iLotto[45] = {};

    for (int i = 0; i < 45; ++i)

    {

        iLotto[i] = i + 1;

    }

    //타임에 시드값을 주자

    srand(unsigned int(time(0)));

    //마음대로 뽑을 인덱스가 필요하다

    int iTemp, iIndex1, iIndex2;

    

     //이제 iLotto의 값을 섞어보자

    for (int i = 0; i < 100; ++i)

    {

        

        iIndex1 = rand() % 45;

        iIndex2 = rand() % 45;

      

        iTemp = iIndex1;

        iLotto[iTemp] = iLotto[iIndex1];

        iLotto[iIndex1] = iLotto[iIndex2];

        iLotto[iIndex2] = iLotto[iTemp];

    }

   

    //이제 6개 숫자와 추가숫자 1개를 뽑아보자

    

    for (int i = 0; i < 6; ++i)

    {

        cout << iLotto[i] <<"\t";

       

    }

    

    cout << "추가숫자:\t" << iLotto[7]; 

답변 0

답변을 작성해보세요.

답변을 기다리고 있는 질문이에요.
첫번째 답변을 남겨보세요!