質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

3回答

2593閲覧

プログラムに近い課題です

satou918523

総合スコア6

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2018/04/19 09:53

こんばんは。初質問失礼します。
a.b.cの箱1つに車が一台入ってて、aに絶対車が入ってるのが条件で、最初にどこに入ってるか当てる人が最初の自分の意見を変えない時と変えた時の的中率を1万回から10万回やってどっちに寄るかって課題です。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

defghi1977

2018/04/19 09:54

で,何をしたいのですか?
LouiS0616

2018/04/19 09:55

モンティホール問題ですね
Zuishin

2018/04/19 09:56

絶対入ってるなら絶対当たるのでは?
satou918523

2018/04/19 10:01

変えた方が正答率が高いのか変えない方が正答率が低いのかお聞きたいです。その理由もあるとありがたいです。
defghi1977

2018/04/19 10:03

問題が破綻している以上「答えることが出来ない」のが答えです.論理学を学び直して下さい.
defghi1977

2018/04/19 10:06

少なくともあなたの提示した問題は「モンティホール問題」ではありません.
satou918523

2018/04/19 10:09

今回の問題って破綻してますかね?
defghi1977

2018/04/19 10:16

a, b, cの全てに車が入っていることもあるのですね?
satou918523

2018/04/19 10:17

それは無いと思います。
Lhankor_Mhy

2018/04/19 10:18

タグが適切ではないと思いますので、変更してください。「統計」タグがよろしいのでは。
defghi1977

2018/04/19 10:19

どこに書いてありますか?あなたが提示した条件には「aに絶対車が入ってる」しか書いてありませんよ
satou918523

2018/04/19 10:23

すいません。このサイト初めてだったのでそのタグがあると思ってませんでした…
退会済みユーザー

退会済みユーザー

2018/04/19 10:24

理論的にいえば、変えないは33%で変えるは44%ぐらいだったような
satou918523

2018/04/19 10:25

Aに車が入ってて1万回から10万回の中でやるのでA.B.Cの中に全て入ってることがあったらそれこそ問題になってないんじゃないですか?
Lhankor_Mhy

2018/04/19 10:26

あ、途中で箱を開けてないのか。それならたしかにモンティホール問題じゃないな。どっちに寄るか、は確率的に偏らないのでは。
satou918523

2018/04/19 10:26

変えないは33パーセントで変えるは44パーセントの理由も教えていただけるとありがたいです。
defghi1977

2018/04/19 10:27

はい「それこそ問題になってない」のです.
defghi1977

2018/04/19 10:30

https://teratail.com/help/question-tips 回答者はあなたの頭の中身を覗いているわけではありませんから, 質問の文面から全ての情報を得るしかありません. 従って, 今回の極めて曖昧で短い文章から正確な意図を慮ることなど出来るわけがありません モンティホール問題について知りたいのであれば最初からそう記述すれば宜しい. これならば相手に明確に意図が伝わります.
Lhankor_Mhy

2018/04/19 10:33

最初にaの箱を選ぶ確率は1/3で変えた時は当選率0で変えない時は1、最初にb,cの箱を選ぶ確率は2/3で変えた時は当選率1/2で変えない時は0。合計すると、変えた時は1/3*0+2/3*1/2=1/3、変えない時は1/3*1+2/3*0=1/3、なので確率は同じ。
satou918523

2018/04/19 10:35

そうですね。私の効き方が悪かったです。次回からは気おつけます。
defghi1977

2018/04/19 10:38

で, このままですと記事がもったいないので, 今一度質問の内容を精査して正確な内容に修正すればおそらく誰かが答えてくださるものと思います.
退会済みユーザー

退会済みユーザー

2018/04/19 10:40

まあ真面目な答えではないし(※ 1/3が2/6なるきがするのはおいておいて)
退会済みユーザー

退会済みユーザー

2018/04/19 10:53

プログラムに「近い」問題であって、プログラムの問題じゃないんでしょ? 機械じゃないんだから、1万回どころか100回やる前に当てる人飽きて投げ出しますって。ガキの使いの田中の100のコトって見た事無いんですか?
guest

回答3

0

Ruby

1# frozen_string_literal: true 2 3boxes = { 4 a: true, 5 b: false, 6 c: false, 7} 8 9count = 100_000 # 10万回 10 11sonomama_rate = count.times.count do 12 select_box = boxes.keys.sample 13 boxes[select_box] 14end.to_f / count 15 16naosu_rate = count.times.count do 17 select_box = boxes.keys.sample 18 next_select_box = (boxes.keys - [select_box]).sample 19 boxes[next_select_box] 20end.to_f / count 21 22monty_rate = count.times.count do 23 select_box = boxes.keys.sample 24 open_box = (boxes.keys - [select_box]) 25 .reject(&boxes.method(:[])).sample 26 next_select_box = (boxes.keys - [open_box]).sample 27 boxes[next_select_box] 28end.to_f / count 29 30monty_hall_rate = count.times.count do 31 select_box = boxes.keys.sample 32 open_box = (boxes.keys - [select_box]) 33 .reject(&boxes.method(:[])).sample 34 next_select_box = (boxes.keys - [select_box, open_box]).first 35 boxes[next_select_box] 36end.to_f / count 37 38printf("%.1f%%\n", sonomama_rate * 100) 39printf("%.1f%%\n", naosu_rate * 100) 40printf("%.1f%%\n", monty_rate * 100) 41printf("%.1f%%\n", monty_hall_rate * 100)

CoffeeScript

1boxes = 2 a: true 3 b: false 4 c: false 5 6count = 100000 # 10万回 7 8sample = (arr) -> 9 arr[Math.floor(Math.random() * arr.length)] 10 11sonomamaRate = [1..count].filter -> 12 selectBox = sample(Object.keys(boxes)) 13 boxes[selectBox] 14.length / count 15 16naosuRate = [1..count].filter -> 17 selectBox = sample(Object.keys(boxes)) 18 next_selectBox = sample(Object.keys(boxes) 19 .filter((box) -> box != selectBox)) 20 boxes[next_selectBox] 21.length / count 22 23montyRate = [1..count].filter -> 24 selectBox = sample(Object.keys(boxes)) 25 openBox = sample(Object.keys(boxes) 26 .filter((box) -> box != selectBox) 27 .filter((box) -> !boxes[box])) 28 next_selectBox = sample(Object.keys(boxes) 29 .filter((box) -> box != openBox)) 30 boxes[next_selectBox] 31.length / count 32 33montyHallRate = [1..count].filter -> 34 selectBox = sample(Object.keys(boxes)) 35 openBox = sample(Object.keys(boxes) 36 .filter((box) -> box != selectBox) 37 .filter((box) -> !boxes[box])) 38 next_selectBox = Object.keys(boxes) 39 .filter((box) -> box != selectBox && box != openBox) 40 boxes[next_selectBox] 41.length / count 42 43 44console.log "#{(sonomamaRate * 100).toFixed(1)}%" 45console.log "#{(naosuRate * 100).toFixed(1)}%" 46console.log "#{(montyRate * 100).toFixed(1)}%" 47console.log "#{(montyHallRate * 100).toFixed(1)}%"

Kotlin

1import kotlin.ranges.IntRange 2 3fun main(args: Array<String>) { 4 val boxes = mapOf( 5 "a" to true, 6 "b" to false, 7 "c" to false) 8 9 val count = 100000 // 10万回 10 11 val sonomamaRate = IntRange(1, count).count(fun(_: Int): Boolean { 12 val selectBox = boxes.keys.shuffled().first() 13 return boxes.getOrDefault(selectBox, false) 14 }).toDouble() / count 15 16 val naosuRate = IntRange(1, count).count(fun(_: Int): Boolean { 17 val selectBox = boxes.keys.shuffled().first() 18 val nextSelectBox = boxes.keys 19 .filterNot({ selectBox.equals(it) }) 20 .shuffled().first() 21 return boxes.getOrDefault(nextSelectBox, false) 22 }).toDouble() / count 23 24 val montyRate = IntRange(1, count).count(fun(_: Int): Boolean { 25 val selectBox = boxes.keys.shuffled().first() 26 val openBox = boxes.keys 27 .filterNot({ selectBox.equals(it) }) 28 .filterNot({ boxes.getOrDefault(it, false) }) 29 .shuffled().first() 30 val nextSelectBox = boxes.keys 31 .filterNot({ openBox.equals(it) }) 32 .shuffled().first() 33 return boxes.getOrDefault(nextSelectBox, false) 34 }).toDouble() / count 35 36 val montyHallRate = IntRange(1, count).count(fun(_: Int): Boolean { 37 val selectBox = boxes.keys.shuffled().first() 38 val openBox = boxes.keys 39 .filterNot({ selectBox.equals(it) }) 40 .filterNot({ boxes.getOrDefault(it, false) }) 41 .shuffled().first() 42 val nextSelectBox = boxes.keys 43 .filterNot({ selectBox.equals(it) || openBox.equals(it) }) 44 .shuffled().first() 45 return boxes.getOrDefault(nextSelectBox, false) 46 }).toDouble() / count 47 48 println("%.1f%%".format(sonomamaRate * 100)) 49 println("%.1f%%".format(naosuRate * 100)) 50 println("%.1f%%".format(montyRate * 100)) 51 println("%.1f%%".format(montyHallRate * 100)) 52}

※ 3番目のコードはKotlinです。Kotlinはシンタックス指定が対応していないっぽい。

投稿2018/04/19 11:41

編集2018/04/19 14:56
raccy

総合スコア21735

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

多分、当てる人が早々に飽きる方に寄ると思います。

投稿2018/04/19 10:03

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

こんにちは、質問の回答として、数学の理論上の説明と、それを実際にプログラミングで
試行した結果を述べたいと思います。

<理論上の説明>
ここに書くと長くなるのでモンティ・ホール問題とその解説をご覧ください。
結果だけ言うと選択肢を変えないで当たる確率が1/3,選択肢を変えて当たる確率が2/3です。

説明の訂正

色んな方に指摘を受け、勘違いしていたところを訂正しました。
最初私が書いたのは10000回の中で「選択肢を変えず当たる回数」「選択肢を変えて当たる回数」
を表示したものでした。

おそらく、「選択肢を変える」「選択肢を変えない」をそれぞれ100000回くらい繰り返し、
当たった回数を比較すべきだったと思います。
それぞれ100000回ずつ試行することで得られる結果(当たった回数)を比較することにしました。

間違ったことを書いてしまい すみませんでした。

Java

1import java.util.Random; 2 3public class Sum { 4 5 final static String BINGO = "あたり"; 6 7 public static void main(String[] args) { 8 int trycount = 100000; 9 int sum1; 10 int sum2; 11 System.out.println("各" + trycount + "回 試行します"); 12 13 sum1 = count(trycount, false); 14 sum2 = count(trycount, true); 15 16 System.out.println("はじめの選択から変更しない場合"); 17 System.out.println("当たった回数の合計: " + sum1 + "/" + trycount); 18 System.out.println("はじめの選択から変更する場合"); 19 System.out.println("当たった回数の合計: " + sum2 + "/" + trycount); 20 21 } 22 23 static int count(int tryCount, boolean rechoice) { 24 int c = 0; 25 for (int i = 0; i < tryCount; i++) { 26 boolean b = judge(rechoice); 27 if (b) 28 c++; 29 } 30 31 return c; 32 } 33 34 static boolean judge(boolean rechoice) {//戻り値がfalseなら選択せずにあたった回数が増え,trueなら選択肢を変えて当たった回数が増える 35 String[] box = box(); 36 int FirstChoice = yourChoice(3); 37 //rechoiceがtrueのときは選択を変える 38 if (rechoice) { 39 40 String []box2 = new String[2]; 41 int pos = 0; 42 for (int i = 0; i < 3; i++) { 43 if (FirstChoice != i) { 44 box2[pos] = box[i]; 45 pos++; 46 } 47 } 48 for(int i = 0; i < 2; i++){ 49 if(!box2[i].equals(BINGO)){ 50 return box2[1 - i].equals(BINGO); 51 } 52 } 53 } 54 //rechoiceがfalseは選択を変えない 55 else { 56 return box[FirstChoice].equals(BINGO); 57 58 59 } 60 return true; 61 } 62 63 static int yourChoice(int c) { 64 Random random = new Random(); 65 return random.nextInt(c); 66 } 67 68 static String[] box() { //当たりの番号をランダムに指定するなら中身のコメントん部分を使う 69 String[] box = { "ヤギ", "ヤギ", "ヤギ" }; 70 //Random random = new Random(); 71 //int i = random.nextInt(3); 72 box[0] = BINGO; 73 return box; 74 } 75}

<結果>(結果には毎回少しの誤差があります。この結果はその中の一つにすぎません)
各100000回 試行します
はじめの選択から変更しない場合
当たった回数: 33545/100000
はじめの選択から変更する場合
当たった回数: 66892/100000

また、10回の試行をして、それセットを100000回ずつ繰り返し、その合計を求めてみます。

Java

1public static void main(String[] args) { 2 int trycount = 10; 3 int try_set = 100000; 4 int c1, c2; 5 int sum1 = 0; 6 int sum2 = 0; 7 System.out.println("各 10回 試行します"); 8 System.out.println("このセットを" + try_set + "回繰り返します。"); 9 int i = 0; 10 while(i < try_set){ 11 12 c1 = count(trycount, false); 13 c2 = count(trycount, true); 14 15 /*System.out.println("*** はじめの選択から変更しない場合"); 16 System.out.println("当たった回数: " + c1 + "/" + trycount); 17 System.out.println("*** はじめの選択から変更する場合"); 18 System.out.println("当たった回数: " + c2 + "/" + trycount);*/ 19 20 sum1 += c1; 21 sum2 += c2; 22 i++; 23 } 24 25 System.out.println("はじめの選択から変更しない場合"); 26 System.out.println("当たった回数の合計: " + sum1 + "/" + trycount * try_set); 27 System.out.println("はじめの選択から変更する場合"); 28 System.out.println("当たった回数の合計: " + sum2 + "/" + trycount * try_set); 29 30 }

<結果>
各 10回 試行します
このセットを100000回繰り返します。
はじめの選択から変更しない場合
当たった回数の合計: 333379/1000000
はじめの選択から変更する場合
当たった回数の合計: 667234/1000000

つまり初めの選択から変更する場合に傾きます。

投稿2018/04/19 12:34

編集2018/04/21 02:57
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2018/04/19 12:35

結果として載せたのはあくまでも一つの例にすぎません. プログラムを実行すると毎回多少の誤差は出ます。
satou918523

2018/04/19 13:03

夜分にすいません。もう一つだけお聞かせください。 実行してみたところRandom rand = new Random();この文章でエラーシンボルないと言われてしまいます。すいません。
Zuishin

2018/04/19 13:10

no_change は a を選ぶ回数で change は b か c を選ぶ回数ですね。 これはモンティホール問題を解くプログラムではありません。
Zuishin

2018/04/19 13:21

if(hit_num == first_choice){ no_change++; } これは最初に選択した箱が a であれば no_change を一つ増やすという命令です。 つまり選択を変える変えない関係なく 1/3 の確立で no_change が一つ増えます。 次の else if はもっとひどいです。条件が必ず真になるので、結果最初の選択が a でなければ必ず change が増えます。else if でなく else としても同じ結果になります。 ですから最終的に出るのが「三つの箱のうち a を選ぶ確率」でしかありません。1/3 に決まっています。
umyu

2018/04/19 16:37

>satou918523さんへ class Sumの行の前に以下の行を追加してくださいな。 import java.util.Random;
退会済みユーザー

退会済みユーザー

2018/04/20 00:48

import java.util.Random;を付けるのは忘れてました。 訂正しておきます。
退会済みユーザー

退会済みユーザー

2018/04/20 01:00 編集

Main関数のところだけを見てたので忘れてしまいました。すみません
Zuishin

2018/04/20 01:15

import もそうですがそれ以前にロジックが破綻しています。 if else が必ず真になるということは hint は使わないということです。 それを踏まえてループ部分を整理すると次のようになります。 while(loop < 1000000){ Random rand = new Random(); int first_choice = rand.nextInt(3);//最初の選択 if(0 == first_choice){ no_change++; } else { change++; } loop++; } ご覧のように何の意味もありません。 モンティーホール問題の答えを知っている前提でそれに合わせて出力しているだけです。
退会済みユーザー

退会済みユーザー

2018/04/20 01:42 編集

もしかして、選択肢を変えて外れた場合を書いていないからでしょうか?
Zuishin

2018/04/20 03:17

箱が四つの場合はどうなりますか? 同じロジックで数字だけ変えて計算できますか? 定数を表示すればいいだけならわざわざループさせる必要はありません。 33333 と 66666 を表示すればいいだけでしょう。 それでも同じ答えは出ますが、これで問題を解いたと言えますか?
退会済みユーザー

退会済みユーザー

2018/04/20 03:50

?? 箱が4つになったら確率はそれぞれ1/4,3/4となります.少なくとも 「定数」でありません
Zuishin

2018/04/20 04:43

この回答でいいなら定数でいいはずです。 私の示したコードで同じ結果が出ますし定数の方がより正確な結果が出ます。
退会済みユーザー

退会済みユーザー

2018/04/20 07:17

(i)選択肢を変えずにあたる確率は最初の選択が当たることのなので1/3です。 (ii)選択肢を変えて当たる確率は 「(i)の余事象」なので2/3です。 これがモンティーホール問題の理論の考え方の一つです。 ですのであなたが言った「else ifのところがelseになっても結果は同じ」は当然です。
退会済みユーザー

退会済みユーザー

2018/04/20 07:19 編集

私がelseのところをelse ifで書いたのは モンティーホール問題を知らない状態でもわかるようにするためです。
Zuishin

2018/04/20 07:21

このプログラムはモンティーホール問題を「解く」プログラムではありません。 あくまでも 1/3 であることを知っている者がその事象を列挙するプログラムです。 知っているなら定数でいいはずです。 解くだけならループは必要ありません。 なぜループが必要になるのか考えてみてください。 ループでは 10000 回程度で正確な確率は出ません。
Zuishin

2018/04/20 07:27

このプログラムでやっていることは、1/3 の確立で not_change を増やし、2/3 の確立で change を増やしているだけです。 モンティーホール問題の肝は「箱を選択した時点で外れの箱が一つ開かれること」です。 これを単純化したのではモンティーホール問題を解くプログラムとは言えません。 人間がすでに解いた問題をなぞるだけのプログラムです。 わかりませんか? 解がわかっているならプログラムを使う必要はないんです。 暗算でいいんですよ。
Zuishin

2018/04/20 07:29

暗算で私は 1/3 と 2/3 の解を得ました。 この定数を出力するプログラムに何の価値がありますか? あなたのプログラムも同じです。 たとえて言うなら、迷路を解くプログラムが、迷路が同じであることをいいことにすでに解かれた道をたどるのと同じです。 迷路を解くプログラムは迷路が変わっても解けなければなりません。 箱が 4 つに増えて破綻するようなプログラムは解くプログラムではなく解いたふりをするプログラムです。
Lhankor_Mhy

2018/04/20 07:30

横からすみません。 Zuishin さんがおっしゃっているのは、 「1+1の解を出力するのに、 System.out.print(2); と書くのは間違い。 System.out.print(1+1); と書くべき。」 という理解でよろしいですか? change か no_change かは、論理的に正しくともショートカットを用いるべきではなく、きちんと場合の数を比べて判断すべき、という意味でよろしいでしょうか?
Lhankor_Mhy

2018/04/20 07:35

あ、それとも「変える試行を1000000回、変えない試行を1000000回行い、結果を比較すべき」というご意見ですか?
Zuishin

2018/04/20 07:35

そうです。 1 + 1 を計算するプログラムならば、2 が必要な時点で破綻しています。 そしてこの回答では不要な hint という変数を使うことで一見何かを計算しているように見せていますが、これはブラフにすぎません。 最適化されれば消えてなくなるような値です。 ブラフでごてごてと飾り立ててはいるが実際には何もしていないプログラムにしか見えません。
退会済みユーザー

退会済みユーザー

2018/04/20 07:38 編集

「変える試行を1000000回、変えない試行を1000000回行い、結果を比較すべき」 でやればよかったのですか?
退会済みユーザー

退会済みユーザー

2018/04/20 07:40

もしかして、質問者が意図しているのはプログラミングで確率を求めるのではなく 実際に試行を何回も繰り返して得た結果がどっちに傾いているか ということですか?
Zuishin

2018/04/20 07:41

モンティーホール問題は暗算で解ける問題です。 暗算で解いて定数を出力すれば結果は得られます。 しかしそれでは解いたことにはならないでしょう。 過程こそが必要なものだと思います。 この質問に関して言えばモンティホール問題だろうという「推測」の域を超えませんが、モンティホール問題であると仮定するならば、「どうやって解くか」こそが必要なものでしょう。 外れた箱を開ける作業を省いているということは、その過程を省いているということです。 ならば定数を出力するのと変わりません。
退会済みユーザー

退会済みユーザー

2018/04/20 07:43

つまり、100000回ぐらい試行して 選択肢を変えて当たった回数、外れた回数(つまり、外れた箱を開けた) 選択肢を変えずにあたった回数、外れた回数を出力すればいいのですか?
Zuishin

2018/04/20 07:52

何度も繰り返しているように、結果は暗算で出ます。 試行しなくても出ます。 試行してもその程度の数では収束しません。 ですので試行は不要です。 プログラミングもコンピューターも不要です。 ただ一言「変えない方が 1/3 で変える方が 2/3」と言えばそれで終わります。 それを証明するものであるなら、いいですか? わかりきった解を証明するものであるなら、このプログラムでは途中を省きすぎです。 全部省くのと変わりありません。 ソースは説明です。 解き方のアルゴリズムを示すものです。 しかしこのソースでは解き方は示せていません。 ただ結果を出力しているだけです。
Lhankor_Mhy

2018/04/20 07:54

この質問をどう解釈するかによると思うのですが、 「モンティホール問題をモンテカルロ法で求めたい」なのか、 「モンティホール問題の論理的考え方を知りたい」なのか。 前者ならきちんと試行をする必要があると思います。 後者ならコードは不要です。オフトピではないかな、とも思います。
Zuishin

2018/04/20 07:54

「実際にやってみた」と言って別のやり方をとったのでは意味がないと思いませんか?
退会済みユーザー

退会済みユーザー

2018/04/20 07:54

どう答えれば、質問者が意図した答えになるのですか?
Zuishin

2018/04/20 08:05

質問者の意図が結果だけ知りたいのであれば 1/3 と 2/3 を教えてあげてください。 このプログラムでは誤差が出ます。 モンテカルロ法で求めたいのであれば、モンティホール問題の手順に従ってください。最適化はできますが、最適化の最たるものは 1/3 と 2/3 の確率を示すだけのものになり、解くとは言えません。 質問者はモンティホール問題であることを言明していません。 質問の条件はモンティホール問題であろうと推定される程度でしかありません。 ですから本来その意図をまず確認して正確な問題を得てから答えるべきでした。
退会済みユーザー

退会済みユーザー

2018/04/20 08:41 編集

問題を勘違いしたかもしれません。すみませんでした。
退会済みユーザー

退会済みユーザー

2018/04/21 07:20

回答を訂正しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問