기본 콘텐츠로 건너뛰기

2020의 게시물 표시

몬티 홀 문제와 베이지안 추론

몬티 홀 문제와 베이지안 추론 몬티 홀 문제 를 풀고 이에 대하여 베이지안 추론 방식으로 설명해 보고자 합니다. 문제 정의 세 개의 문이 있고 한 개의 문 뒤에는 자동차, 나머지 두 개의 문 뒤에는 염소가 있습니다. 각각의 문에는 1, 2, 3으로 번호가 붙어 있고 문이 닫힌 상태에서는 뒤에 무엇이 있는지 알 수 없습니다. 게임쇼 참여자가 1번을 선택하였습니다. 이어서 문 뒤에 무엇이 있는지 알고 있는 진행자는 3번 문을 열었고 그 뒤에는 염소가 있었습니다. 게임쇼 참여자에게 선택을 2번으로 바꿀 수 있는 기회가 주어집니다. 그렇다면 1번에 머무르는 것보다 2번으로 바꾸는 것이 우승할 확률을 더 높여줄까요? 문제 해결의 단서 문 뒤에 무엇이 있는지 알고 있는 진행자 는 2번 문과 3번 문 중 어느 하나를 무작위로 선택해서 여는 것이 아니라 자동차가 없는 문을 골라서 여는 것입니다. 진행자의 행위로 인해 2번 문 뒤에 자동차가 있을 확률이 더 높아졌다고 말할 수 있습니다. 문 뒤에 무엇이 있는지 모르는 진행자 가 2번 문과 3번 문 중에서 3번 문을 임의로 선택해서 열었는데 거기에 염소가 있다면 그것은 우연히 그렇게 된 것일 뿐입니다. 이 경우에는 2번 문 뒤에 자동차가 있을 확률을 더 높여주지 않으므로 1번 문을 선택한 게임쇼 참여자가 2번 문으로 바꿀 이유가 없습니다. 베이지안 추론 베이즈 정리 베이즈 정리는 아래의 식으로 표현됩니다. P ( C ∣ E ) = P ( E ∣ C ) × P ( C ) P ( E ) P(C|E) = \frac{P(E|C)\times P(C)}{P(E)} P ( C ∣ E ) = P ( E ) P ( E ∣ C ) × P ( C ) ​ 위의 식을 몬티 홀 문제에 적용하기 위하여 C와 E를 다음과 같이 정의합니다. C: 2번 문 뒤에 자동차 존재 (2-car) E: 3번 문 열기 (3-open) 3번 문 뒤에 염소가 있을 경우 2번 문 뒤에 자동차가 있을 확률...

Excel VBA 사용하기

1. 개요 1.1. 목적 간단하고 짧은 비주얼 베이직 코드를 작성하여 엑셀 문서에 유용한 기능을 추가할 수 있음을 보여줍니다.  1.2. 독자 소프트웨어 개발자 데이터 분석가 2. 준비 1) 엑셀 문서를 다음 형식의 파일로 저장합니다. Excel 매크로 사용 통합 문서 (*.xlsm) 2) 엑셀 문서에서  파일 > 옵션  메뉴를 클릭합니다. 3)  리본 사용자 지정  탭에서  개발 도구  항목을 선택하고 확인 버튼을 클릭합니다. 4) 메뉴바에  개발 도구 가 추가되었음을 확인합니다. 3. Hello, VBA! 예제 3.1. 매크로 추가 1) 엑셀 문서에서  보기 > 매크로 > 매크로 보기  메뉴를 클릭합니다. 2)  매크로 이름  입력창에  Hello 를 입력하고  만들기  버튼을 클릭합니다. 3) 비주얼 베이직 편집기에서 아래 내용을 입력하고 저장합니다. Sub Hello()      MsgBox ( "Hello, VBA!" ) End Sub 3.2. 매크로 실행 1) 엑셀 문서에서  보기 > 매크로 > 매크로 보기  메뉴를 클릭합니다. 2)  매크로 이름  목록에서  Hello 를 선택하고  실행  버튼을 클릭합니다. 3) 엑셀 문서에 다음과 같은 대화상자가 표시됨을 확인합니다. 4. 셀의 값을 읽고 쓰기 예제 4.1. 매크로 추가 1) 엑셀 문서에서  보기 > 매크로 > 매크로 보기  메뉴를 클릭합니다. 2)  매크로 이름  입력창에  ReadAndWriteExample 을 입력하고  만들기  버튼을 클릭합니다. 3) 비주얼 베이직 편집기에서 아래 내용을 입력하고 저장합니다. Sub ReadAndWriteExample(...

Indy SDK Java 예제 빌드 및 실행

Indy SDK Java 예제 빌드 및 실행 아래 문서를 참고하여 Ubuntu에서 Indy SDK Java 예제를 빌드하고 실행하는 실습을 진행합니다. Indy SDK Samples - Java 1. 실습 환경 Windows 10 Oracle VM VirtualBox 6.1.6 가상 머신 생성 이름: ubuntu-indy 메모리 크기: 4 GB 저장소 크기: 40 GB ( 10 GB로 하면 금방 부족해짐) Ubuntu Desktop 20.04 LTS 2. Java 빌드 프로그램 설치 Java SDK를 설치합니다. $ sudo apt-get install openjdk-8-jdk Maven을 설치합니다. $ sudo apt-get install maven 3. Java 예제 빌드 Indy SDK 소스를 다운로드합니다. $ cd $HOME $ git clone https://github.com/hyperledger/indy-sdk.git Java 예제를 빌드합니다. $ cd $HOME/indy-sdk/samples/java $ mvn package 4. 테스트 Indy 노드 풀을 실행합니다. $ cd $HOME/indy-sdk $ docker build -f ci/indy-pool.dockerfile -t indy_pool . $ docker run -itd -p 9701-9708:9701-9708 indy_pool Java 예제를 실행합니다. $ mvn exec:java -Dexec.mainClass=Main 정상적인 실행 결과는 아래와 같은 메시지를 출력합니다. Anoncreds sample -> started SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder". SLF4J: Defaulting to no-operation (NOP) logge...

Indy SDK 빌드 및 설치

Indy SDK 빌드 및 설치 Indy SDK 바이너리 파일을 설치하려면 아래의 문서를 참고하여 libindy , libnullpay , libvcx , 그리고 indy-cli 를 설치할 수 있습니다. Ubuntu based distributions (Ubuntu 16.04 and 18.04) 여기서는 아래 문서들을 참고하여 Ubuntu에서 Indy SDK 소스를 빌드하고 설치하는 과정을 실습합니다. The Rust Programming Language - Installation Setup Indy SDK build environment for Ubuntu based distro (Ubuntu 16.04) on Read the Docs Setup Indy SDK build environment for Ubuntu based distro (Ubuntu 16.04) on GitHub Indy SDK on GitHub 1. 실습 환경 Windows 10 Oracle VM VirtualBox 6.1.6 가상 머신 생성 이름: ubuntu-indy 메모리 크기: 4 GB 저장소 크기: 40 GB ( 10 GB로 하면 금방 부족해짐) Ubuntu Desktop 20.04 LTS 2. C 빌드 프로그램 설치 Make를 설치합니다. $ sudo apt-get install make C/C++ 컴파일러 및 링커를 설치합니다. $ sudo apt-get install g++ 3. Rust 빌드 프로그램 설치 터미널에서 아래 명령을 실행합니다. $ curl https://sh.rustup.rs -sSf | sh 위 명령은 다음 작업을 수행합니다. 설치 스크립트 다운로드 설치 스크립트 실행 rustup 을 설치 rustup 을 사용하여 최신 버전의 Rust를 설치 Rust 실행 경로 $HOME/.cargo/bin 를 환경변수 PATH 에 추가 ...