티스토리 뷰

<geometirc확률 활용>

-k번째에 처음으로 이길 확률
-확률을 넘겨줄 때 ranf()함수를 통해 k를 구할 수 있으며 이것을 또다른 랜덤값으로 사용이 가능하다.

-활용한 수식
ranf() = 1-(1-p)^k
- geometric 함수
geometric함수에 확률p변수를 넘겨주고 ranf()를 실행시켜 k를 return할 수 있게 설정한다.

%tip
ranf()는 등비수열의 합 공식을 활용해 유도할 수 있다.



<Queuing system model = M/M/1 queue>

geometric을 사용한 시뮬레이션 작성
M : inter-arrival times with mean Ta.
(Ta란 geometric에 넘겨줄 확률을 의미함)
M : service times with mean Ts.
(Ta란 geometric에 넘겨줄 확률을 의미함)

int main() { double ta = 0.1, ts = 0.1; int te = 200, t1, t2, time; int n; n = 0; t1 = 0; t2 = te; time = 0; int b = 0, B = 0, b_r = 0; int t_n = time, s = 0; int t = 0; int c = 0; int event = 1, customer = 1, server=0; while (time < te) { switch (event) { case 1: printf("[at time %d] (customer arrive), %d arrive\n", t1,customer); time = t1; n++; t1 = time + geo(ta); customer++; if (n == 1) { event = 2; t2 = time + geo(ts); break; } else if (t1 >= t2) { event = 3; break; } else { event = 1; break; } case 2: server++;//serve횟수저장 if (t1 >= t2) { printf("[at time %d] (service begin), %d start\n", time, server); event = 3; break; } else { printf("[at time %d] (service begin), %d start\n", time, server); event = 1; break; } case 3: c++; n--; time = t2; if (n > 0) { printf("[at time %d] (service complete) %d complete\n", time, c); event = 2; t2 = time + geo(ts); break; } else { printf("[at time %d] (service complete) %d complete\n", time, c); event = 1; t2 = te; break; } } } }

쉽게 생각하기)
은행 업무처리 프로세스를 생각해보면 더 쉽게 생각할 수 있다.

'네트워크프로그래밍' 카테고리의 다른 글

세마포어  (0) 2021.05.31
소켓 옵션 변경  (0) 2021.05.27
네트워크프로그래밍 - FIFO  (0) 2021.05.15
네트워크 프로그래밍 -PIPE  (0) 2021.05.15
CSMA/CD란?  (0) 2021.04.09