강의

멘토링

커뮤니티

Cộng đồng Hỏi & Đáp của Inflearn

Hình ảnh hồ sơ của joylms999041
joylms999041

câu hỏi đã được viết

C++ Hãy tạo trò chơi

xổ số

같은 숫자반복

Viết

·

315

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]; 

C++

Câu trả lời

Câu hỏi này đang chờ câu trả lời
Hãy là người đầu tiên trả lời!
Hình ảnh hồ sơ của joylms999041
joylms999041

câu hỏi đã được viết

Đặt câu hỏi