| 이전 주제 보기 :: 다음 주제 보기 |
| 글쓴이 |
메시지 |
신희식
가입: 2009년 9월 17일 올린 글: 13
|
올려짐: 2009년11월14일 14:59 주제: 숙제 5-1번 질문입니다. |
|
|
5-1에서 repeat 와 choice의 개념이 잘 이해가 되지 않네요.
1. repeat의 경우 0번 이상의 반복인데, 이때의 반복 횟수는 더이상 state가 변하지 않을 때 까지 인가요 아니면 랜덤인가요
2. choice의 경우 두개의 cmd중 만약 앞의 cmd가 state를 변화시킬 가능성이 있고 뒤의 cmd가 state를 변화시킬 가능성이 없더라도 "임의로"하나만 실행해야 하는건가요 (만약 맞다면 ml에서 랜덤함수의 사용법을 잘 모르겠어요.) |
|
| 위로 |
|
 |
윤용호
가입: 2008년 9월 23일 올린 글: 257
|
올려짐: 2009년11월14일 15:36 주제: re |
|
|
5-1 문제의 개념을 제대로 이해하지 못하신 듯 합니다.
만약 'Mirage 언어의 실행기'를 작성하라고 했다면
1. repeat은 랜덤하게 아무렇게나 반복해야하고
2. choice는 둘중에 랜덤하게 아무거나 실행해야 하며
-> 그 결과 state가 단 하나로 결정되어야 합니다. 따라서 실행할 때마다 결과 state가 달라지겠죠.
하지만 우리가 작성하는 것은 'Mirage 언어의 싹쓸이 실행기'입니다.
싹쓸이 실행기라 함은, 위의 조건, 랜덤으로 마구 실행해서
결과로 얻을 가능성이 있는 모든 state를 모아내라는 뜻입니다.
repeat c 라면 c를 한번 실행했을때의 state, 두번 실행했을 때의 state.. 등등을 모두 모은 합집합이 싹쓸이 실행기의 결과가 될 것이고
choice c1 c2 라면 c1의 수행 결과와 c2의 수행 결과의 합집합이 되고 이런 식이겠지요.
참고로 이번에 쓰실 일은 없겠으나 랜덤함수는 standard library의 Random 모듈에 정의되어 있습니다.
Random.int 100 과 같이 사용하면 0에서 99 사이의 랜덤 정수가 하나 뽑힙니다.
Random.bool () 은 반반의 확률로 true 나 false를 만들어내구요.
http://caml.inria.fr/pub/docs/manual-ocaml/libref/Random.html _________________ TA |
|
| 위로 |
|
 |
|