본문 바로가기
정보/기타정보

난수란 무엇일까?

by 불타는ICE 2019. 11. 13.

난수란 무엇일까?

 

' 난수란 정의된 범위 내에서 무작위로 추출된 수를 일컫는다. 난수는 누구라도 그다음에 나올 값을 확신할 수 없어야 한다. '라고 정의되어있다.

 

 

 


 

그렇다면 컴퓨터에서 사용되는 난수는 진짜 난수일까?

 

 

 

 

 

 

컴퓨터 분야에서 말하는 난수는 보통 결정론적인 방법으로 생성된 난수라고 한다. 특정 입력이나 조건에 따라 무작위로 선택된 것처럼 보이는 난수가 생기고, 생성 조건이나 입력이 같다면 결괏값은 항상 같다.

 

 


 

 

 

컴퓨터는 스스로 난수를 만들어낼 수 없기 때문에 보통 씨앗 값(Seed)이라 불리는 수를 인자로 매번 다르게 주어 매번 다른 의사 난수를 추출하여 사용한다.

 

 


 

 

 

이 씨앗 값은 보통 시간을 이용하는데, 시간은 보통 현재 시간을 의미한다. 매 순간 현재시간이 바뀌며 한 번 지나간 시간은 다시 돌아오지 않는다는 특성은 이전에 발생했던 의사 난수를 재연 불가능하게 만들며, 이 시간이 밀리초 단위로 섬세하게 표현된다면 사람에 의한 임의적 조간도 사실상 불가능해진다.

 

 

 

 


 

 

 

가장 기본적인 프로그래밍 언어인 C언어로 예를 들자면

먼저 rand() 함수가 선언되어있는 stdlib.h 헤더 파일을 Include 한다. 하지만 rand() 함수는 별도로 시드를 설정해주지 않을 경우 동일한 값만을 반복해서 출력하기 때문에 srand() 함수를 이용하여 시드를 설정해주어야 한다. 그리고 시간을 시드 값으로 사용하기 위해 time.h 헤더 파일도 Include 해준다.

 


#include <stdio.h> //Standard Input/Output

#include <stdlib.h> //Standard Library

#include <time.h>

int main(void)

{

int random;

srand((unsigned int)time(NULL));

random = rand()%100;

printf("%d",random);

return 0;

}


 

위와 같이 코드를 작성하고 실행시키면 0부터 99중에 한 숫자가 랜덤으로 출력된다.

출력된 값은 실행시킬 때마다 랜덤으로 바뀐다.

 

 

 

 

 

 

 

 

 


더보기

c언어 c프로그래밍 C c C언어 c랜덤 c random srand rand c 언어 랜덤 값 랜덤수 랜덤숫자 unsigned time int stdlib stdio c progamming 프로그래밍 자바 c++ + 난수 랜덤 숫자 랜덤값

태그

댓글