블로그 참고
[C언어/C++] rand, srand, time 랜덤함수에 대해서 (난수생성)
안녕하세요. BlockDMask 입니다. 오늘은 C/C++로 개발할때 가끔 사용하는 랜덤한 수(난수)를 생성하는 함수에 대해서 알아보겠습니다. 랜덤한 값을 가지고올때 필요한데요. 그럼 시작해보겠습니다. 1
blockdmask.tistory.com
랜덤숫자 만들기
>필요한 명령은 딱 세가지
1. rand()
2. srand(어떤값: 시드)
3.time(NULL)
>rand()는 일단 랜덤한 숫자를 내보낸다.
하지만.. 프로그램 자체를 하나 실행할 때마다.
규칙이 있는 랜덤한 숫자를 만들어 나갈 수 있다
즉, 아까 나왔던 순열이 프로그램 껐다가 다시 실행하는데 있어서
똑같이 나올 수 있다.
ex)
처음 실행할떄
8 7 29 34 12 43
두번째 프로그램 실행에서도
8 7 29 34 12 43
이런식으로..
이러한 숫자는 코드에 srand()가 쓰여 있던 없던
srand(어떤값 : 시드) 에들어있는
시드값이 같아진다면
rand()의 다음 반복적인 명령어 실행에서 늘 같은 값이 나오고
시드값이 늘 달라진다면
rand()실행에서 불규칙적인 값이 나온다. 즉 랜덤이 나온다.
>절차
늘 rand()를 실행하기전에
srand(time(NULL))을 넣어준다고 생각하자
srand(time(NULL))한뒤, rand() 실행
이 다음에 나올 rand의 값은 늘 달라진다.
범위지정.
rand()는 0~32767 사이의 값을 내보내므로
rand()%N (N = '원하는 최대범위 값')
>1.printf하기
srand(time(NULL));
[for while 이든 반복문..]
printf("%d", rand()%N);
>2.배열 arr에 넣기
srand(time(NULL));
[for while 이든 반복문..]
arr[i] = rand()%N;
'Language > C&C++' 카테고리의 다른 글
[2021_스터디][백준 20540번] 연길이의 이상형 (0) | 2021.01.17 |
---|---|
스터디 1일차_[백준9012 괄호] (0) | 2020.02.21 |