2013-08-15 2 views
0

첨부 세 개의 꼬리를 얻을 수있는 사례의 비율을 인쇄하면 문제가 : 코드의 관점에서 http://puu.sh/42QtI/ea955e5bef.png동전의 던지기 세 번 시뮬레이션과 하나가

, 이것은 내가 지금까지 무엇을 가지고

이 질문은 "세 꼬리의 시뮬레이션 된 백분율을 계산하라"는 질문을합니다. 이것은 내가 붙어있는 부분입니다. 누군가 나에게 다음 단계로 나아갈 것에 대한 통찰력을 줄 수 있습니까?

public static boolean isThreeTails(){ 
      Random rand = new Random(); 
      int numberOfTosses = 3; 
      int numberOfHeads = 0; 
      int numberOfTails = 0; 

      for(int i = 1; i <= numberOfTosses; i++){ 
       int value = rand.nextInt(2); 
       if(value == 0){ 
        numberOfTails++; 
       }else{ 
        numberOfHeads++; 
       } 
      } 
      if(numberOfTails == 3){ 
       return true; 
      } 
      else{ 
       return false; 
      } 
     } 

double numTosses = 1000000; //choose whatever here 
     double threeTails = 0; 
     for(int i =0; i < numTosses; i++){ 
      if(isThreeTails()){ 
       threeTails++; 
      } 
     } 
     System.out.println("Theoretical probability of 3 Tails: " + (double) 1/8); 
     System.out.println("Actual results for " + numTosses + " tosses = " + threeTails/numTosses); 

편집 : 여기서 트리플 꼬리가있을 때를위한 카운터를 만듭니다. numberOfTripleTails 카운터가 증가합니다. "H"를 굴리는 경우 numberOfTails은 단순히 0으로 되돌아갑니다. 그러나 내 코드는 대답으로 '3'을 제공하는 것으로 보입니다.

편집 2 : 완료!

+0

의 주요 방법에서이 메소드를 호출하기를 원할 것입니다 수 있도록 그 방법을 수정 한 (정확하게) 3 번. 이 작업을 1000 회 이상 수행하고 실제로 얼마나 많은 경우 3 꼬리인지 확인하십시오. – jlordo

+0

백분율을 계산하는 방법을 알고 계십니까? 시뮬레이션에서 만드는 함수를 작성하는 방법을 알고 있습니까? 루프를 사용하는 방법을 알고 있습니까? 시뮬레이션 당 꼬리 수를 계산하는 방법을 알고 있습니까? (저는 3이 너무 많습니다. 즉, 화학자는 최대 2 : 모노, 디, 폴리 등))? –

답변

1

이미 작성한 방법은 3 회 토스를 시뮬레이트합니다. 지금 호출 가능한 기능 이제 isThreeTails()

public static boolean isThreeTails(){ 
    Random rand = new Random(); 
    int numberOfTosses = 3; 
    int numberOfHeads = 0; 
    int numberOfTails = 0; 

    for(int i = 1; i <= numberOfTosses; i++){ 
     int value = rand.nextInt(2); 
     if(value == 0){ 
      numberOfTails++; 
     }else{ 
      numberOfHeads++; 
     } 
    } 
    if(numberOfTails == 3){ 
     return true; 
    } 
    else{ 
     return false; 
    } 
} 

당신이 던지는되어 지금 ThreeTosses.java

double numTosses = 100; //choose whatever here 
double threeTails = 0; 
for(int i =0; i < numTosses; i++){ 
    if(isThreeTails()){ 
     threeTails++; 
    } 
} 
System.out.println("Theoretical probability of 3 Tails: " + (double) 1/8); 
System.out.println("Actual results for " + numTosses + " tosses = " + threeTails/numTosses); 
+0

간단하면서도 포괄적입니다. 고맙습니다! – theGreenCabbage

2

좋아요 - 시뮬레이션을 실행했고 머리 수와 꼬리 수에 대한 가치가 있습니다. 이제 몇 가지 더 실행해야합니다.

시뮬레이션을 실행할 때마다 실행 한 총 시간을 추적하는 변수를 증가시킵니다. 꼬리 수가 세 개가되면 다른 변수가 증가합니다. 성공이라고 부르 자.

문제의 결과는 시뮬레이션이 실행 된 총 시간에 대한 성공입니다.

+0

with _append_, _increment_를 의미합니까? – jlordo

+0

수정하십시오. 말씨와 혼란스럽게해서 죄송합니다. – Surveon

+3

문제 없습니다. 그래서 대답 아래에 [** 편집 **] (http://stackoverflow.com/posts/18258009/edit) 버튼이 있습니다.) – jlordo

1

"이론 상으로는 1/8의 시간이 필요합니다." 이제는 "좋아요. 이론을 알았습니다. 실제로 컴퓨터에서이 작업을 수행하고 이 실제로 인 것을 확인하십시오."

이 코드를 여러 번 실행하고 3 개의 꼬리가있는 횟수를 추적하십시오. 그 숫자를 가져 와서 코드를 실행 한 총 횟수로 나눕니다. 시뮬레이션 된 비율이어야합니다.

당신이 말할 수없는 경우에 대비해, 코드에서 이것을하는 것이지, 현재 코드를 반복해서 반복해서 실행하는 것이 아닙니다. 다음은 몇 가지 의사 코드입니다.

threeTailsCount = 0 
for i = 0; i < 1000; i++ 
    if currentCodeReturns3Tails 
    threeTailsCount += 1; 

print (threeTailsCount/1000) 
관련 문제