중복 없는 난수 생성

2018. 10. 27. 20:01·Language/C C++
반응형
중복없는난수생성

난수생성함수

Alt Text 랜덤한 수 즉 난수를 생성하기 위해서는 rand함수를 사용한다.

 

xxxxxxxxxx
#include<stdio.h>
#include<stdlib.h>  //rand()
#define SIZE 5
int main (){
        for(int i = 0 ; i < SIZE ; i++){
                printf("%d\n",rand());
        }
        return 0;
}
xxxxxxxxxx
OUTPUT
1804289383
846930886
1681692777
1714636915
1957747793

 

이처럼 아무 연관없는 정수가 출력된다. 하지만 프로그램을 여러 번 실행해 보면 같은 값이 계속 나오는것을 확인할 수 있다. 매번 난수를 다르게 출력하는 데는 srand함수를 사용한다.

 

xxxxxxxxxx
#include<stdio.h>
#include<stdlib.h>  //rand(), srand()
#include<time.h>    //time()
#define SIZE 5
int main (){
        srand(time(NULL));
        for(int i = 0 ; i < SIZE ; i++){
                printf("%d\n",rand());
        }
        return 0;
}

이렇게 하면 프로그램을 실행할 때 마다 다른값이 출력되는 것을 확인할 수 있다.

 

가끔 정렬을 확인하기 위해 임의의 배열을 만들어야 하는 경우가 있다. 이 떄 배열의 값으로 랜덤한 수를 넣어준다. 값이 중복되어도 문제가 되는 경우는 없지만 중복없이 배열을 채우는 법은 다음과 같다.

xxxxxxxxxx
#include<stdio.h>
#include<stdlib.h>  //rand(), srand();
#include<time.h>    //time()
#include<string.h>  //memset()
#define SIZE 5
void mkArr(int* arr, int size){
        int cnt = 0;
        int test[size];
        memset(test,0,size*4);
        srand(time(NULL));
        while(cnt<size){
                int num = rand()%size;
                if(test[num] == 0){
                        test[num] = 1;
                        arr[cnt] = num;
                        cnt++;
                }
        }
}
int main (){
        int arr[SIZE];
        mkArr(arr,SIZE);
        for(int i = 0; i<SIZE; i++){
                printf("%d\n",arr[i]);
        }
        return 0;
}
xxxxxxxxxx
OUTPUT
2
4
0
3
1


반응형
저작자표시 비영리 변경금지 (새창열림)
'Language/C C++' 카테고리의 다른 글
  • [C++]optional
  • 아이템선택
  • 정렬
  • 시간 측정
덴마크초코우유
덴마크초코우유
IT, 알고리즘, 프로그래밍 언어, 자료구조 등 정리
    반응형
  • 덴마크초코우유
    이것저것끄적
    덴마크초코우유
  • 전체
    오늘
    어제
    • 분류 전체보기 (117)
      • Spring Framework (2)
        • Spring (2)
        • JPA (2)
        • Spring Security (0)
      • Language (51)
        • Java (11)
        • Python (10)
        • JavaScript (5)
        • NUXT (2)
        • C C++ (15)
        • PHP (8)
      • DB (16)
        • MySQL (10)
        • Reids (3)
        • Memcached (2)
      • 개발 (1)
      • 프로젝트 (2)
      • Book (2)
      • PS (15)
        • 기타 (2)
        • 백준 (2)
        • 프로그래머스 (10)
      • 딥러닝 (8)
        • CUDA (0)
        • Pytorch (0)
        • 모델 (0)
        • 컴퓨터 비전 (4)
        • OpenCV (1)
      • 기타 (16)
        • 디자인패턴 (2)
        • UnrealEngine (8)
        • ubuntu (1)
        • node.js (1)
        • 블로그 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 미디어로그
    • 위치로그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Unreal
    mscoco
    php
    JavaScript
    블루프린트
    프로그래머스
    딥러닝
    select
    PS
    C
    C++
    알고리즘
    언리얼엔진4
    NUXT
    Unreal Engine
    파이썬
    자바
    게임
    pytorch
    웹
    클래스
    JS
    map
    memcached
    FPS
    MySQL
    CPP
    Python
    redis
    게임 개발
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
덴마크초코우유
중복 없는 난수 생성
상단으로

티스토리툴바