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

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

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

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

2回答

1121閲覧

Swiftでコインを3回連続で100回投げたとき、3回とも連続で同じ面が出る確率を計算したプログラムのつもりです。アルゴリズム?は、合ってるでしょうか?

ahoahomarumaru

総合スコア26

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2019/04/20 12:26

前提・実現したいこと

コインを3回投げたとき三回とも同じ面になる確率を求めたい!!!


var kakuritu = 0

var omate = 0.0

var ura = 0.0

var omote3 = 0.0

var ura3 = 0.0

for _ in 0...100{
for _ in 0...2 {

let r = Int.random(in: 0...1) if r == 0 { print("おもて") omate += 1 kakuritu += 1 } else if r == 1 { print("裏!!") ura += 1 kakuritu += 1 } else { print("エラー!!") } if omate == 3 || omate == 0 { omote3 += 1 } if ura == 3 || ura == 0 { ura3 += 1 } omate = 0 ura = 0

}
}
print(omote3 / 1000 * 100) // 15
print(ura3 / 1000 * 100) //15

どうかご回答のほどよろしくお願いします。

//これは私の初プログラミングです。とうかご鞭撻のほどよろしく尾根芸申し上げます。

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

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

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

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

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

y_waiwai

2019/04/20 12:29

それで結果はどう表示されるんでしょうか
guest

回答2

0

ベストアンサー

いろいろ問題がありますね。

if omate == 3 || omate == 0 { omote3 += 1 } if ura == 3 || ura == 0 { ura3 += 1 }

の部分。 omote==0 という事は、表が一回も出なかったという事なので、毎回裏だった訳ですよね。
それなのに、3回とも表の回数を数えるのに使う omote3を増やしてはダメです。
ura==0の場合も同様。

if omate == 3 { omote3 += 1 } if ura == 3 { ura3 += 1 }

が正解。

==

var omate = 0.0 var ura = 0.0 var omote3 = 0.0 var ura3 = 0.0

これらの変数は、+1されるだけなので、浮動小数点数にする必要なし

==

print(omote3 / 1000 * 100) // 15 print(ura3 / 1000 * 100) //15

の部分は意味不明。 「15」というコメントも判らない

3連続投を100回やって、全部裏がN回あったら、確率は N% ですよね。
だったら下のこーどのように、特に計算せずに表示してOK。

print("3回とも表だった確率" + omote3) print("3回とも裏だった確率" + ura3)

投稿2019/04/20 12:51

coco_bauer

総合スコア6915

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

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

ahoahomarumaru

2019/04/22 01:08

回答ありがとうございます。 とても助かりました。
guest

0

var omate = 0.0

var ura = 0.0

var omote3 = 0.0

var ura3 = 0.0

for _ in 0...100{
for _ in 0...2 {

let r = Int.random(in: 0...1) if r == 0 { omate += 1 } else if r == 1 { ura += 1 } else { print("エラー!!") } if omate == 3 { omote3 += 1 } if ura == 3 { ura3 += 1 } } print(omate) omate = 0 ura = 0

}

print("3回とも表だった確率" + "(omote3 / 100 * 100)%") //3回とも表だった確率11.0%

print("3回とも裏だった確率" + "(ura3 / 100 * 100)%") //3回とも裏だった確率16.0%

投稿2019/04/22 01:23

ahoahomarumaru

総合スコア26

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

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

fuzzball

2019/04/22 01:32

coco_bauerさんの回答の、 >>これらの変数は、+1されるだけなので、浮動小数点数にする必要なし が反映されていません。
fuzzball

2019/04/22 01:34

if omate == 3 { とか if ura == 3 { は、3回投げた後で判定しないとダメなのでは?
fuzzball

2019/04/22 01:35

omate の綴りを直して下さい。
fuzzball

2019/04/22 01:35

0...100 だと 101回になるのでは?
ahoahomarumaru

2019/04/27 04:02

ありがとうございいます。 ``` var omate = 0 var ura = 0 var omote3 = 0.0 var ura3 = 0.0 for _ in 1...100{ for _ in 0...2 { let r = Int.random(in: 0...1) if r == 0 { omate += 1 } else if r == 1 { ura += 1 } else { print("エラー!!") } if omate == 3 { omote3 += 1 } if ura == 3 { ura3 += 1 } } print(omate) omate = 0 ura = 0 } print("3回とも表だった確率" + "(omote3 / 100 * 100)%") //3回とも表だった確率11.0% print("3回とも裏だった確率" + "(ura3 / 100 * 100)%") //3回とも裏だった確率16.0%```
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問