일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- C언어 메모리
- Spring google
- C언어
- java
- gcc
- C언어 매크로
- placehoder
- Naver SmartEditor
- C언어 파일입출력
- GUI
- 자바
- 오라클
- 역순
- 텍스트 파일 읽기
- jsp
- 구글 reCaptcha
- 포인터
- C언어 함수
- Spring email
- Vim
- TCP/IP 소켓
- Google reCaptcha
- URL 다운로드
- Oracle
- C언어 변수
- 날짜
- C언어 구조체
- SQL
- C언어 배열
- HTML5
- Today
- Total
easy software
C언어 rand()함수를 이용하여 의사난수 출력하기 본문
안녕하세요. 이번 시간에는 의사난수를 출력하는 방법을 알아보겠습니다.
의사난수란? 임의의 수입니다. 즉 랜덤넘버인거죠.
난수를 출력한다는것은, 무작위의 숫자를 출력한다는 뜻입니다.
난수를 사용하는 예는 대표적으로 로또가 있겠네요.
하지만 의사난수는 한번 컴파일하면 그 값이 계속해서 남아있게 됩니다.
두번쨰, 세번째 컴파일해도 처음에 컴파일 한 난수만 나온다는 것이 문제죠.
난수는 stdlib.h에 선언되어 있는 함수를 이용해서 출력합니다.
아래의 코드를 보면서 설명 드리겠습니다.
#include <stdio.h>
#include <stdlib.h> //난수발생을 위해 추가
int main(void){
//난수의 최댓값 출력
printf("난수의 범위 : 0부터 %d까지 \n", RAND_MAX);
//난수5개를 출력
for (int i = 0; i < 5; i++)
printf("난수 출력 : %d \n", rand());
return 0;
}
주석에서 RAND_MAX와 rand()는 설명하고 있으니 생략하겠습니다.
출력 결과를 보시면 어떤식으로 출력이 되는지 감이 잡히실겁니다.
그런데 이 난수를 우리가 원하는 범위의 숫자로 출력할 순 없을까요?
가능합니다! 중학교? 때 봤었던 공식인거 같은데요 아래를 보시죠.
공식 : rand() % ((원하는 최댓값 - 원하는 최솟값) + 1) + 원하는 최솟값
이 공식을 사용하면 원하는 범위의 값을 출력할 수 있습니다!
그럼 0이상 99이하의 난수 5개를 출력하려면 어떻게 해야 할까요?
for (int i = 0; i < 5; i++)
printf("0이상 99이하 난수 출력 : %d \n", rand() % ((99 - 0) + 1) + 0);
위와 같은 코드로 작성하시면 됩니다!
공식이 그대로 적용되었죠? 공식을 굳이 외우지 않아도,
구글링을 통해서 얼마든지 확인이 가능하니 걱정마세요!
그리고 난수를 컴파일 할 때마다 변경할 수 있는 방법은 다음 시간에 소개해드리겠습니다.
'C언어 > 기타' 카테고리의 다른 글
C언어 난수를 이용한 가위 바위 보 게임 (0) | 2015.01.31 |
---|---|
C언어 rand() / srand()와 time.h를 사용하여 난수를 출력해보자 (0) | 2015.01.31 |
C언어 공식을 코드로 변경해보자! (0) | 2015.01.11 |
C언어 사용자로부터 초를 입력받아 시, 분, 초로 계산해주는 예제 (0) | 2015.01.11 |
C언어 소수(Prime Number) 출력하기 (0) | 2015.01.10 |