컴퓨터/C&C++

[C언어] stdlib.h time.h을 이용한 랜덤값 만들기

블로그 참고

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


 

'컴퓨터 > C&C++' 카테고리의 다른 글

[2021_스터디][백준 20540번] 연길이의 이상형  (0) 2021.01.17
스터디 1일차_[백준9012 괄호]  (0) 2020.02.21