2016-12-04 21 views
0

クラップスのゲームで10,000回のシミュレーションを使用して勝利確率を計算します(wins/ (wins + losses))。ここではクラップスのゲームのための方法は次のとおりです。クラップスのゲームで10,000回のシミュレーションで勝利確率(勝/勝利)を計算します。これは割り当ての一部です

public class CrapsGame { 

    public static void main(String[] args) { 
      int dice1 = (int)(Math.random()* 6) + 1; 
      int dice2 = (int)(Math.random()* 6) + 1; 
      int roll = dice1 + dice2; 
      System.out.println(); 
      System.out.print("You rolled "+roll+". "); 
      if(roll == 2 || roll == 3 || roll == 12){ 
        System.out.println("You Lose !"); 
      }else if(roll == 7 || roll == 11){ 
        System.out.println("You Win !"); 
      }else{ 
        System.out.println("Point is "+roll+"\n"); 
        dice1 = (int)(Math.random()* 6) + 1; 
        dice2 = (int)(Math.random()* 6) + 1; 
        int roll2 = dice1 + dice2; 
        System.out.print("You rolled "+roll2+". "); 
        while(roll2 != 7){ 
          if(roll == roll2){ 
            System.out.println("You Win !"); 
            break; 
          }else{ 
            System.out.println("Point is "+roll+"\n"); 
          } 
          dice1 = (int)(Math.random()* 6) + 1; 
          dice2 = (int)(Math.random()* 6) + 1; 
          roll2 = dice1 + dice2; 
          System.out.print("You rolled "+roll2+". "); 
        } 
        if(roll2 == 7){ 
          System.out.println("You Lose !"); 
        }      
      } 
    } 
} 

私は、これは困難であるべきとは思わない、私はちょうど万回のシミュレーションを実行するためのコードを必要とし、その後も確率を計算します。ありがとう:)

誰かがこの

はしばらく置くか、ループのロジックの外と2つのカウンタ(timesWinning、timesLosing)の作成の作業バージョンを挿入することが可能であろう。既存のコードの中で、それぞれをインクリメントします。ループが10.000回を実行した後、必要に応じて、数学の操作を行います。これは割り当て

+0

あなたのロジック外 'while'または' for'ループを入れて、2つのカウンタ(timesWinning、timesLosing)を作成します。既存のコードの中で、それぞれをインクリメントします。ループが10.000回実行された後、必要に応じて「wins /(wins + losses)」という数式を実行します。 – Tom

+0

申し訳ありませんが、私はJavaにはまったく新しいものです。実際のコードを手伝ってもらえますか?それはあまりにも難しくはないようで、あなたが忙しいと助けてくれてありがとうございました。私はおそらく助けが得られません。 – HrmMz

+0

これは学校からの授業ですか? – Tom

答えて

0

の一部である勝利/(勝利+損失)

はあなたに感謝あなたのコードは、すでにすべてのロジックが必要としています。あなたが望む回数だけ繰り返すには、さまざまな方法があります。それらはloopsとして知られています。 Googleで検索すると、forwhiledo/whileなど(コード内にwhileが既にあります)が見つかります。

あなたの質問のために、基本的なことは同じことを10,000回繰り返すことです。

public class CrapsGame { 

    public static void main(String[] args) { 

     // Create some variables to control the times it won and times it lost 
     int timesWon = 0; 
     int timesLost = 0; 


     // Here we're saying it's gonna repeat 10000 times, incrementing 1 by 1 
     for(int i=0; i<10000; i++) { 
      // Here you will insert all the existing logic from your program 

      // In the existing code, increment the variables declared according 

      if(roll == 2 || roll == 3 || roll == 12){ 
       System.out.println("You Lose !"); 
       timesLost++; 
      }else if(roll == 7 || roll == 11){ 
       System.out.println("You Win !"); 
       timesWon++; 
      }else{ 
       // Where you find it won, insert `timesWon++;` 
       // Where you find it lost, insert `timesLost++;` 
      } 
     } 
     // Here it exits the for loop (after 10000 times) 
     // Here's where you can calculate 

     System.out.println("Probability of winning: " + (timesWon/(timesWon + timesLost))); 
    } 
} 

これは、望ましい結果を得るには十分であるはずです。

希望します。

1

そして、あなたは最後にこれに自分のコードを変更する必要があります

System.out.println("Probability of winning: " + ((double)timesWon/(timesWon + timesLost))); 

私は自分から結果としてこれを得た:あなたがプレイし

:10000.0、勝った:5078、勝利の確率:あなたがプレイ0.5078

:1.0E8は、優勝:50707214を、勝利の確率を:0.50707214

+0

大丈夫です。 – HrmMz

+0

コードを教えていただけますか?私はこれを取得して実行しようとするのに少し問題に走っています.. – HrmMz

+0

何が問題なのですか?上記はあなたがする必要があります。あなたはブラケットに問題がありますか?あなたの日食にすべてを押してください。すべてを整列させると、はるかに簡単になります。 –

関連する問題