Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- Cleancode
- Math
- server
- DP
- C
- programmers
- BFS
- 따배씨
- 따라하며 배우는 C언어
- graph
- Algorithm
- 인프런
- php
- udemy
- String
- 생활코딩
- JavaScript
- BASIC
- web
- dfs
- sorting
- 종만북
- Algospot
- BOJ
- C언어
- greedy
- 백준
- Python
- 따라하면서 배우는 C언어
- 정수론
Archives
- Today
- Total
몽상실현개발주의
[따배씨] 12.12 난수 생성기 모듈 만들기 예제 본문
따배씨 - 따라하며 배우는 C언어
12강 Storage Classes, Linkage and Memory Management
12.12 난수 생성기 모듈 만들기 예제
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(){
/*
rand()
- 0 to RAND_MAX (typically INT_MAX)
- defined in stdlib.h.
*/
// srand(1); // random seed, seed 값을 바꾸면 다른 랜덤 값이 나옴
srand((unsigned int)time(0)); // seed 값을 매번 바꾸기 위해, time 함수를 이용
for (int i = 0; i < 10; ++i){
printf("%d\n", rand());
// printf("%d\n", rand() % 6 + 1);
}
return 0;
}
srand(num);
- rand() 함수의 seed 값을 입력하여, rand 함수의 결과의 양상이 달라지도록 함
#include <stdio.h>
int main(){
unsigned int next = 1;
for (int i = 0; i < 10; ++i){
next = next * 1103515245 + 1234;
next = (unsigned int) (next / 65536) % 32768;
printf("%d\n", (int)next);
}
return 0;
}
- rand() 함수의 내부 알고리즘 중 하나
- seed 값을 next 값으로 설정
next = next * 1103515245 + 1234;
- over flow 를 이용
next = (unsigned int) (next / 65536) % 32768;
- int 형과 자리수를 맞추는 단계
// main.c
#include <stdio.h>
#include <time.h>
#include "my_rand.h"
int main(){
my_srand((unsigned int)time(0));
for (int i = 0; i < 10; ++i){
printf("%d\n", my_rand() % 6 + 1);
}
return 0;
}
// my_rand.h
#define my_rand_h
#include <stdio.h>
void my_srand(unsigned int);
int my_rand(void);
#endif /* my_rand_h */
// my_rand.c
#include "my_rand.h"
static unsigned int next = 1;
void my_srand(unsigned int seed){
next = seed;
}
int my_rand(){
next = next * 1103515245 + 1234;
next = (unsigned int) (next / 65536) % 32768;
return (int)next;
}
이 글의 모든 사진과 내용의 출처는 홍정모 교수님께 있음을 알려드립니다.
http://blog.naver.com/atelierjpro
http://www.inflearn.com/course/following-c
'Language > C' 카테고리의 다른 글
[따배씨] 12.14 메모리 누수와 free() 의 중요성 (0) | 2021.06.15 |
---|---|
[따배씨] 12.13 메모리 동적 할당 (0) | 2021.06.14 |
[따배씨] 12.10 변수의 저장 공간 분류 요약 정리 ~ 12.11 함수의 저장 공간 분류 (0) | 2021.06.14 |
[따배씨] 12.9 정적 변수의 내부 연결 (0) | 2021.06.14 |
[따배씨] 12.8 정적 변수의 외부 연결 (0) | 2021.06.14 |
Comments