プロが教える店舗&オフィスのセキュリティ対策術

以下問題文&条件
・入力を促すメッセージを表示後、今日の天気を入力する
・今日の天気を100%(1)とし、残りの天気を0%(0)とする
・7日後まで繰り返す(7回繰り返す)
・明日、晴れになる確率を求める
・今日が晴れの確率×晴れが晴れになる確率+今日が曇りの確率×曇りが晴れになる確率+今日が雨の確  率×雨が晴れになる確率
・同様に、明日、曇りになる確率を求める
・同様に、明日、雨になる確率を求める
・明日の天気の確率を表示する
・明日の天気の確率を、今日の天気の確率の変数に代入する
※switch文とfor文を使うこと

出来れば解説もお願いしたいです。

質問者からの補足コメント

  • 確率はこれだと思うので下記に載せておきます。

    「Java 7日後までの天気を予測する」の補足画像1
    No.1の回答に寄せられた補足コメントです。 補足日時:2021/08/24 18:19
gooドクター

A 回答 (2件)

import java.io.BufferedReader;


import java.io.IOException;
import java.io.InputStreamReader;

// メッセージは自分で決める事

public class Main {
 public static void main(String[] args) {

  InputStreamReader isr = new InputStreamReader(System.in);

  double p_clear = 0, p_cloudy = 0, p_rainy = 0;
  // 入力を促すメッセージを表示後、今日の天気を入力する
  System.out.println("message");

  String str = null;
  // switch文とfor文を使うと言うくだらない要求を取り敢えず満たす
  for (;;) {
   BufferedReader br = new BufferedReader(isr);
   try {
    str = br.readLine();
    br.close();
   } catch (IOException e) {
    e.printStackTrace();
   }
   // 今日の天気を100%(1)とし、残りの天気を0%(0)とする
   switch(str) {
    case "clear":
     p_clear = 1;
     break;
    case "cloudy":
     p_cloudy = 1;
     break;
    case "rainy":
     p_rainy = 1;
     break;
    default:
     continue;
    }
    break;
  }
  // 7日まで繰り返す(7回繰り返す)
  prob(7, p_clear, p_cloudy, p_rainy);
 }
 public static double[] prob(int n, double p0, double p1, double p2) {
  double[][] p = {{0.4, 0.4, 0.2},
         {0.3, 0.4, 0.3},
         {0.3, 0.5, 0.2}};
  if (n == 0) {
   double[] values = {p0, p1, p2};
   return values;
  } else {
   // 明日、晴れになる確率
   double p0_new = p0*p[0][0] + p1*p[1][0] + p2*p[2][0];
   // 明日、曇りになる確率
   double p1_new = p0*p[0][1] + p1*p[1][1] + p2*p[2][1];
   // 明日、雨になる確率
   double p2_new = p0*p[0][2] + p1*p[1][2] + p2*p[2][2];
   // 明日の天気の確率を表示する
   System.out.println(p0_new + " " + p1_new + " " + p2_new);
   // 明日の天気の確率を今日の天気の確率の変数に代入する
   return prob(n - 1, p0_new, p1_new, p2_new);
  }
 }
}
    • good
    • 0

雨になる確率や曇りになる確率がサッパリ分からないんで何とも言いようがない。


問題がおかしいので解くのは不可能だと思う。
(大体、エビデンスしか計算しようとしてねぇんじゃねぇの?)
この回答への補足あり
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

gooドクター

このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング