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

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

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

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Q&A

解決済

1回答

173閲覧

ruby コードの文法が分かりません

Sh1nn

総合スコア24

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

0グッド

0クリップ

投稿2019/05/22 03:56

<ruby>でモンティ・ホール問題のシミュレーションをしようとしています。
ネット上のコードを参考に完成はしたのですが、一部理解できない所があり質問しました。

コード-------------
1 print "試行回数を入力:"
2 $n = gets.chomp.to_i
3
4 def choice(and_choice)
5 doors = [true, false, false] #ドアの生成
6 choice_me = rand(3) #自分が選ぶ
7 if choice_me == 0 or choice_me == 1 #モンティーが選ぶ
8 choice_monty = 2
9 else
10 choice_monty = 1
11 end
12
13 if and_choice #ドアを変えますか?
14 doors.delete_at(choice_monty) #モンティーの開けたドアを消す
15 if choice_me == 0 #ドアを変える
16 re_choice_me = 1
17 else
18 re_choice_me = 0
19 end
20 doors[re_choice_me]
21 else
22 doors[choice_me] #ドアを変えない
23 end
24 end
25
26 def simu(and_choice)
27 i = 0
28 $n.times {i += 1 if choice(and_choice) }
29 i.to_f / $n
30 end
31
32 puts simu(false)
33 puts simu(true)


28行目の文の構造が分かりません
おそらく[ i ]がtrueとfalseの2つ存在すると思うのですが、なぜそのようなことが可能なのか分かりません
わかる方がいれば教えてくださいm__m

もしくは、どのようなワードで調べれば出てくるでしょうか?

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

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

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

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

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

guest

回答1

0

ベストアンサー

該当メソッドを書き換えてみましたがこれでわかりやすくなったでしょうか?

ruby

1def simu(and_choice) 2 i = 0 3 $n.times do 4 if choice(and_choice) 5 i = i + 1 6 end 7 end 8 i.to_f / $n 9end

投稿2019/05/22 04:07

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

Sh1nn

2019/05/22 04:10

回答ありがとうございます おかげで理解できました
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問