디시인사이드 갤러리

마이너 갤러리 이슈박스, 최근방문 갤러리

갤러리 본문 영역

분석글 ) 몬테카를로 시뮬레이션 1. 간단하게나마 알아봅시다

GreenM.갤로그로 이동합니다. 2017.09.14 02:13:55
조회 429 추천 0 댓글 6
														

 

viewimage.php?id=3bee&no=29bcc427bd8077a16fb3dab004c86b6f24b7e12241bb1d94d286fe9f64ee62d8befa6430771105c91c7876d2162ec21fdf003d48



안녕하세요!


오늘은 새로운 자료가 아니라, 전 글에서 올린 안철수님의 시뮬레이션글에서..


뒷부분에 있던 몬테카를로 시뮬레이션 코드를 분석하고자 글을 올리게 되었습니다.

 


이 분석글은 너무나도 길어서, 두 글로 나누어서 쓰려고 합니다

.

1) 이번글은 직접 이 프로그램을 실행시켜보고, 어떤 코드인지 아주 간략하게 알아보는 것까지 쓸 예정입니다.


2) 다음 글은 파스칼 언어의 간단한 문법에 대해 알아보고

그 지식을 바탕으로 그 코드들을 구체적으로 분석해보는 것까지 쓸 예정입니다. (변형에 관한 문제들도 내고요)

 

 


(0)준비물


우선 전에 올렸던 해석본은 다음 글에 필요한 거니 한번 어떻게 생겼는지 보기만 하시고,

 

그 외에 필요한 준비물에는 크게 세 가지가 있습니다.



viewimage.php?id=3bee&no=29bcc427bd8077a16fb3dab004c86b6f24b7e12241bb1d94d286fe9f64ee62d8befa6430771105c91d2e71d3177c921ae68a0b7b



여기에서 명령 프롬프트, 메모장은 이미 우리의 윈도우에 깔려있는 것들이니 넘어가고..


Free Pascal 프로그램은 우리가 직접 깔아줘야 할 프로그램입니다.

 


하지만, 지금은 깔지 마세요.


다음 글에 자세히 설명할 테니 일단은 ~ 다음글에 이런게 필요하구나..’ 하고 넘어가시면 됩니다J

 

 

 

 

 

 

1.


(1-1) 파일을 다운받아 볼까요?


https://drive.google.com/file/d/0B16sKm1d6CQMZTFPUlRyRk94cFU/view?usp=sharing


코드(MON.PAS)와 실행파일(MON.EXE)이 들어있습니다.

 


다운받으셨으면 바탕화면에 압축을 풉니다



코드의 경우 메모장을 키고 MON.PAS 파일을 메모장 커서에 드래그시키면 보실 수 있고,


실행(EXE) 파일은 그냥 클릭하면 실행됩니다.

 



(1-2) 이거 안 켜지는데요(…)



일단 파일을 다운받았는데 뭐하는 프로그램인진 모르겠고,


실행파일을 누르면 켜지자마자 꺼집니다. (!!!)

 


웃긴건, 켜지자마자 꺼지는 현상은 지극히 정상적인 현상이라는 것입니다(…)

 





그런데 우리는 이 프로그램이 뭐하는 프로그램인지 정말로 알고 싶습니다.


그럼 어떻게 실행시키느냐?

 



viewimage.php?id=3bee&no=29bcc427bd8077a16fb3dab004c86b6f24b7e12241bb1d94d286fe9f64ee62d8befa6430771105c91d2f23821a2e901099a8ba63



1) 명령 프롬프트를 키세요.



 


viewimage.php?id=3bee&no=29bcc427bd8077a16fb3dab004c86b6f24b7e12241bb1d94d286fe9f64ee62d8befa6430771105c91e747984132fc31dcf3faf08



2) 다운받은 파일들 중에 mon 파일이 있을 것입니다.


 그 파일을 명령 프롬프트에 드래그시키고, 명령 프롬프트 화면을 클릭해 ENTER 를 칩니다.






viewimage.php?id=3bee&no=29bcc427bd8077a16fb3dab004c86b6f24b7e12241bb1d94d286fe9f64ee62d8befa6430771105c918747085472b974aea82ac01


 


그러면 이렇게 결과창이 뜹니다.

 

한자리 숫자부터 세자리 숫자까지 나열되어 있는 걸 보실 수 있습니다.

 

 






2. 그러면 이건 뭐하는 프로그램인가요?

(몬테카를로 시뮬레이션 글 읽고 오시는 걸 권장드립니다.)


 


프로그램 실행결과를 보면 시뮬레이션 같지는 않고,


숫자만 쭉- 나열되어 있습니다.

 



이건 시뮬레이션을 여러 한 결과의 값들을 작은 수부터 큰 수 순서대로 줄을 세우고, 차례대로 출력한 것입니다.


이렇게 말하면 이해 안 가실 수 있으니 차근차근 설명하겠습니다.

 




안철수님이 말씀하셨듯


이 시뮬레이션은 동물이 먹이에 도달하게 되는 것은 동물의 감각기관으로 찾는게 아닌 이리저리 움직이다가 우연의 일치로 닿게 되는 것이라는 가정 하에 돌리는 시뮬레이션입니다.

 




우선, 맵의 크기를 정하고, 시뮬레이션을 실행할 횟수를 정합니다.


그리고, 시뮬레이션의 결과값들을 담는 배열 을 하나 만듭니다.


 

이렇게 알려드리면 안되지만, (여기서의) 배열이라는 것은...


숫자들을 여러 개 담을 수 있는 상자들의 모임이라고 생각하면 이해하기 쉽습니다.


viewimage.php?id=3bee&no=29bcc427bd8077a16fb3dab004c86b6f24b7e12241bb1d94d286fe9f64ee62d8befa6430771105c9117d78de4624cd4c8d86ca38


이 글에 자료형을 적을 공간이 부족하니,


지금은 여러 번 돌린 시뮬레이션의 결과값들을 하나씩 순서대로 담을 수 있는, 번호가 매겨져 있는 한 상자라고 생각합시다.

 




[한번 시뮬레이션을 실행할 때 ]


동물과 음식을 일정한 거리에 둡니다.


음식의 경우 맵의 가운데에 배치하고, 동물의 경우 음식이 있는 가로줄의 맨 끝에 배치시킵니다.




viewimage.php?id=3bee&no=29bcc427bd8077a16fb3dab004c86b6f24b7e12241bb1d94d286fe9f64ee62d8befa6430771105c94b7a7280137ccc10befb3232

(이건 이미 시뮬레이션 글에 있는 그림이라죠ㅋㅋ)



그러면 그림처럼 세팅이 됩니다.



 


viewimage.php?id=3bee&no=29bcc427bd8077a16fb3dab004c86b6f24b7e12241bb1d94d286fe9f64ee62d8befa6430771105c91a7b76d6402dc219d53d7852



그런 다음 동물과 음식이 닿기 전까지,


 동물을 동, , , 북 중 한 방향으로, 한 칸 씩만 이동시키게 합니다.


(이 때, 동물은 맵 밖으로 빠져나갈 수 없습니다.)



그리고 한 칸 씩 이동시킬 때마다 동물이 이동한 횟수를 카운트합니다.




 


viewimage.php?id=3bee&no=29bcc427bd8077a16fb3dab004c86b6f24b7e12241bb1d94d286fe9f64ee62d8befa6430771105c94a7f70d2427e9610f1fc81f8



만약 동물과 음식이 닿게 되면, 시뮬레이션 한번을 종료합니다.


그리고, 동물이 총 이동한 횟수를 배열에 담습니다.


(, 제가 계속 결과값이라고 했던 게 이 동물의 총 이동한 횟수였습니다.)

 


여기까지가 시뮬레이션 한 번이고, 이 시뮬레이션을 계속해서 반복합니다.


계속 실행시키다보면..




viewimage.php?id=3bee&no=29bcc427bd8077a16fb3dab004c86b6f24b7e12241bb1d94d286fe9f64ee62d8befa6430771105c94b282787402f9110b7629c7a



배열에는 이렇게 결과값(한 시뮬레이션 당 동물이 총 이동한 거리)’들이 넣어집니다.

 

그리고 시뮬레이션이 아예 끝나면,

 



viewimage.php?id=3bee&no=29bcc427bd8077a16fb3dab004c86b6f24b7e12241bb1d94d286fe9f64ee62d8befa6430771105c91d7b72801679cc4c7c0f5c59

결과값들을 작은 수부터 큰 수 순으로 줄 세우고, 이 나열된 결과값들을 출력합니다.



그러고선 이 시뮬레이션 프로그램은 종료가 됩니다.




3. 마치며..



여기까지는 안철수님이 적은 것과 많이 겹치는 부분들이라 시뮬레이션 글을 읽은 분들은 충분히 이해가 가실거라 생각합니다.



간단하게 코드 내용을 알고 싶었던 분들은 이 글까지만 읽으시면 되고요:)


만약 상세히 알고 싶으신 분들은.. 바로 다음글은 아니고 다다음글(?)을 보시는 게 좋을거라 생각합니다.



 

그럼 두번째 글에선 파스칼 언어 문법에 대해 간단히 알아보고,


그 문법을 바탕으로 상세히 코드를 분석하는 활동을 해보도록 하겠습니다.



 


 

+) 코드 변경된 사항


다음 글을 쓰기 전에 미리 고백할 게 있습니다.

 


사실 이 파일은 제가 조금 수정시켰습니다(…)


그 신성한 코드에 손을 살짝 얹었습니다.

 



그래도 출력하는 방식 외에 본질적인 것은 건들지 않았습니다ㅠㅠ..

 

어느 부분이 수정되었는지 말씀드리겠습니다.

 



viewimage.php?id=3bee&no=29bcc427bd8077a16fb3dab004c86b6f24b7e12241bb1d94d286fe9f64aa378c72c6281decaeca6d956ed7f231eb9cb3b42b1ac16d894f65



뭔진 모르지만, 글자가 어딘가 모르게 바뀌었다는 사실은 알 수 있습니다.


 

안철수님의 코드는 문법상으로 에러가 없고, 그래서 정상적으로 실행되었어야 할 코드 부분이었습니다.


뭐하는 코드였냐면, 시뮬레이션을 여러 번 돌린 결과의 값들이 별 개수로 출력되는 코드였습니다.



밑의 사진과 같이..

 



viewimage.php?id=3bee&no=29bcc427bd8077a16fb3dab004c86b6f24b7e12241bb1d94d286fe9f64ee62d8befa6430771105c91e7576d01a79c44910a63baf


 

? 정상적으로 잘 작동되는데 왜 고쳤냐고요?




ㅠㅠ.. 이 코드는 제대로 작동하는 게 아니랍니다.

 

만약 정상적으로 작동했으면 다음과 같아야 합니다.

 

 



viewimage.php?id=3bee&no=29bcc427bd8077a16fb3dab004c86b6f24b7e12241bb1d94d286fe9f64ee62d8befa6430771105c94a7d7180467f971bedf94a4f


 

1.적은 양의 별부터 많은 양의 별 순으로 출력되었어야 합니다.


2.한칸씩 띄어지지 않아야 합니다.

 


그러나, 안타깝게도 제가 여러번 실행한 결과 위의 두 사항은 실행되지 않았고,


그래서 부득이하게 별로 표시하는 코드를 숫자로 표시하는 코드로 대체했습니다.

 


그러므로 양해 부탁드립니다..


 

요약 : 결과값이 별 개수로 출력되는 코드가 오류가 있어,  숫자로 출력되는 코드로 수정했습니다.

 

 

 



그래도 기존 파일을 실행시키고 싶은 분들은..



https://drive.google.com/file/d/0B16sKm1d6CQMNXNKRkFnWVQ1eDQ/view?usp=sharing

 


여기가서 다운받으시고, 실행시켜보세요.



추천 비추천

0

고정닉 0

0

댓글 영역

전체 댓글 0
등록순정렬 기준선택
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 제목 글쓴이 작성일 조회 추천
설문 어떤 상황이 닥쳐도 지갑 절대 안 열 것 같은 스타는? 운영자 24/05/20 - -
541 생각해보면 90년대 네거티브 반박하는 사람이 1명도 없음ㅋㅋ [3] ㅇㅇ(106.102) 19.11.17 105 0
540 심지어는 이런 글도 '최근에' 올라옴 [7] ㅇㅇ(211.36) 19.11.17 139 0
539 하다하다 이런 개소리까지 다 보네 ㅋㅋㅋㅋ [2] ㅇㅇ(211.36) 19.11.17 119 0
538 가끔 지칠 때마다 이런거 그림 [3] ㅇㅇ(211.36) 19.11.15 69 0
536 진짜 얼마만의 자유냐 [2] ㅇㅇ(117.111) 19.11.15 59 0
535 옛찰 보면 힐링되지 않냐 [2] ㅇㅇ(117.111) 19.11.15 90 0
534 내일 자료 정리하러 본가 간다 [2] ㅇㅇ(117.111) 19.11.15 63 0
533 생존신고 [4] ㅇㅇ갤로그로 이동합니다. 19.11.11 53 0
531 생존신고 [3] ㅇㅇ갤로그로 이동합니다. 19.10.17 56 0
488 V3갤매에 걸맞기 위해 요즘 생활코딩 눈팅중입니다.. [3] ㅇㅇ갤로그로 이동합니다. 19.06.17 117 0
463 마이크로소프트웨어 1994년 3월호 안철수 인터뷰 자료 [2] 리버_갤로그로 이동합니다. 19.05.26 221 1
462 '(안철수의) 컴퓨터바이러스뉴스' 짤막한 후기 [2] 리버_갤로그로 이동합니다. 19.05.26 195 1
443 안랩 간단 후기 2 [10] 리버_갤로그로 이동합니다. 19.04.14 195 1
442 안랩 간단 후기 1 리버_갤로그로 이동합니다. 19.04.14 267 2
440 안랩 가는 중 [2] 리버_갤로그로 이동합니다. 19.04.13 89 0
167 이런곳이! [3] REAL갤로그로 이동합니다. 18.04.06 175 0
57 세이프 트랜스액션 개쓰레기 같음 [1] ㅇㅇ(119.194) 17.12.27 190 0
52 고생하셨습니다. [1] ㅇㅇ갤로그로 이동합니다. 17.11.23 104 1
51 이런 데도 있구나 [2] 딱히찰스안깜갤로그로 이동합니다. 17.11.22 164 2
50 갤주 v3쓰는 이유 머냐? [1] 굿데이커맨더갤로그로 이동합니다. 17.11.21 258 0
45 국내 최초로 제작된 압축 프로그램에 대해 알아보자 - (1) [10] GreenM.갤로그로 이동합니다. 17.10.19 789 17
44 '별난 컴퓨터 의사 안철수' 책 읽다가ㅋㅋㅋㅋㅋ [2] GreenM.갤로그로 이동합니다. 17.10.16 212 1
43 13일의 금요일 특집 > VACCINE II Plus 1.0 [2] GreenM.갤로그로 이동합니다. 17.10.13 256 1
42 v3 갤러리에 내는 세가지 퀴즈 [3] GreenM.갤로그로 이동합니다. 17.10.08 151 0
37 ㅃ) v3 마갤용 컴퓨터 사전 프로그램을 장난삼아 만들고 있습니다(._. [4] GreenM.갤로그로 이동합니다. 17.09.22 194 0
33 조회수는 은근 높은데 [1] ㅇㅇ갤로그로 이동합니다. 17.09.14 159 0
분석글 ) 몬테카를로 시뮬레이션 1. 간단하게나마 알아봅시다 [6] GreenM.갤로그로 이동합니다. 17.09.14 429 0
31 마이크로소프트웨어) 시뮬레이션 - 안철수 [6] GreenM.갤로그로 이동합니다. 17.09.10 544 0
30 ㅃ) 안철수님이 백신제작 책에서 특허출원 중이란 글을 쓰셨길래.. [2] GreenM.갤로그로 이동합니다. 17.09.08 245 0
29 도서관 가서 찰스님 책 자료 일부 얻어왔습니다:) (+고민중입니다..) [3] GreenM.갤로그로 이동합니다. 17.09.08 209 1
28 (책 스캔) 컴퓨터, 참 쉽네요! - 안철수님 part [2] GreenM.갤로그로 이동합니다. 17.09.05 299 0
27 글 올리는 분이 생기다니 뜻밖이고 반갑습니다. [1] ㅇㅇ갤로그로 이동합니다. 17.09.03 179 0
25 VACCINE (V3 맨 처음버전) 설명 + 파일첨부 [1] GreenM.갤로그로 이동합니다. 17.09.02 300 0
24 재업) v3 관련 자료들 싸그리 모으고는 있는데.. [3] GreenM.갤로그로 이동합니다. 17.09.02 211 0
22 이 갤 언제 생겼지? v3글 마음껏 올려도 됨?? [2] ㅇㅇ(211.46) 17.08.23 199 0
1234
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2