Page 61 - Do it! 자료구조와 함께 배우는 알고리즘(C 언어, 3쇄)
P. 61
29 printf("최댓값은 %d입니다.\n", maxof(height, number));
30 free(height); /* 배열 height를 해제 */
31
32 return 0;
33 }
실행 결과로 보이는 값은 하나의 예이며, 실행할 때마다 다른 값이 생성됩니다.
이제 프로그램을 실행해 보겠습니다. 사람 수를 입력하면 곧바로 그 사람 수만큼 키의 값이
자동으로 생성되고 최댓값이 출력됩니다(키의 값을 일일이 입력하는 수고를 덜어줍니다).
아래는 난수의 생성 단계를 요약한 것입니다.
1 rand 함수, srand 함수, time 함수의 선언이 들어 있는 헤더를 포함시킵니다.
2 난수의 seed(씨앗)를 초기화하기 위해 srand 함수를 호출합니다.
3 난수를 생성하기 위해 rand 함수를 호출합니다.
보통은 한 번만 2 를 실행하고 난수가 필요할 때마다 3 을 실행합니다.
생성한 난수를 90으로 나눈 나머지(0 ~ 89)에 100을 더하므로 height[i]에 대입하는 키의 값은 100 ~ 189입니다.
보충수업 2-4 난수의 생성
난수를 생성하는 rand 함수가 반환하는 값은 0 이상 RAND_MAX 이하의 값입니다. 이때 <stdlib.h>
헤더에 정의된 RAND_MAX 값은 컴퓨터 환경에 따라 다릅니다(최소 32,767입니다).
다음은 2개의 난수를 생성하는 프로그램의 일부입니다
#include <stdio.h>
#include <stdlib.h>
/* … 중략 … */
x = rand(); /* 0 이상 RAND_MAX 이하의 난수를 생성 */
y = rand(); /* 0 이상 RAND_MAX 이하의 난수를 생성 */
printf("x 값은 %d이고 y 값은 %d입니다.\n", x, y);
이 프로그램을 실행하면 x와 y는 서로 다른 값이 출력됩니다. 그런데 이 프로그램은 몇 번을 다시 실행
해도 x 값과 y 값이 항상 같습니다.
02• 기본 자료구조 61