質問するログイン新規登録

質問編集履歴

3

質問の追加

2019/05/24 15:45

投稿

wpx-vv1uZ
wpx-vv1uZ

スコア23

title CHANGED
File without changes
body CHANGED
@@ -154,4 +154,52 @@
154
154
  c = 敗北/n
155
155
  ```
156
156
  回答を参考に考えをまとめました。文法は間違いだらけです
157
- どこから手をつければ良いでしょうか?
157
+ どこから手をつければ良いでしょうか?
158
+
159
+ ```ruby
160
+ print "所持金を入力してください:"
161
+ x = gets.chomp.to_i
162
+ v = x
163
+ print "最初の掛け金を入力してください:"
164
+ y = gets.chomp.to_i
165
+ u = y
166
+ print "目標金額を入力してください:"
167
+ z = gets.chomp.to_i
168
+
169
+ print "試行回数を入力してください:"
170
+ n = gets.chomp.to_i
171
+
172
+ i = 0
173
+ a = 0
174
+ b = 0
175
+ c = 0
176
+
177
+ n.times do
178
+ until v < u || v >= z do
179
+ i += 1
180
+ roulette = rand(2)
181
+ i_choice = rand(2)
182
+ if roulette == i_choice
183
+ v += u + 1000
184
+ u = y
185
+ else
186
+ v -= u
187
+ u *= 2
188
+ end
189
+ end
190
+
191
+ if v >= z
192
+ a += 1
193
+ elsif v < u and v >= x
194
+ b += 1
195
+ else
196
+ c += 1
197
+ end
198
+ end
199
+
200
+ puts [a,b,c]
201
+
202
+ ```
203
+ 最初に書いたコードがこれでした
204
+ このコードだと、[a,b,c]のどれか1つに試行結果がいってしまうので何か間違いがあるのはわかるのですが、具体的な所が分かりません。
205
+ 何がいけないのでしょうか?

2

コードの改善?

2019/05/24 15:44

投稿

wpx-vv1uZ
wpx-vv1uZ

スコア23

title CHANGED
File without changes
body CHANGED
@@ -88,5 +88,70 @@
88
88
  よろしくお願いします
89
89
 
90
90
  ### 補足情報(FW/ツールのバージョンなど)
91
+ ```ruby
92
+ =begin[賭けのルール]
93
+ 赤と黒のみのルーレットを想定
94
+ 指定した色なら勝ち、違うなら負け
95
+ ・勝った場合
96
+ 掛け金+1000を所持金に足す
97
+ 掛け金を一番最初の額に戻す
98
+ ・負けた場合
99
+ 掛け金を所持金から引く
100
+ 掛け金を二倍にする
101
+ =end
102
+ class Roulette
103
+ x = 0
104
+ y = 0
105
+ u = y
106
+ z = 0
107
+ roulette = rand(2)
108
+ i_choice = rand(2)
109
+ if roulette == i_choice
110
+ x += u + 1000
111
+ u = y
112
+ else
113
+ w -= u
114
+ u *= 2
115
+ end
116
+ end
91
117
 
118
+ # 初期設定を入力
119
+ x,y,z = gets.split.map(&:to_i)
120
+ #x:所持金、y:掛け金、z:目標金額
121
+
122
+ # 試行回数を入力
123
+ n = gets.to_i
124
+ #インスタンス変数として掛け金と所持金をもち賭けを実行するメソッド
125
+ def roulette.bet
126
+ @u = x
127
+ @v = y
128
+ return do roulette
129
+ end
130
+ #所持金を返すメソッド
131
+ def roulette.money
132
+ return x
133
+ end
134
+ #続行可能かを判定するメソッド
135
+ def roulette.continue?
136
+ return x >= y and x < z
137
+ end
138
+
139
+ 結果 = {"目標達成": 0,"増加": 0, "敗北": 0}
140
+ n.times{
141
+ roulette = Roulette.new(x, y)
142
+ roulette.bet while roulette.money < z && roulette.continue?
143
+ if roulette.money >= 目標金額
144
+ 結果[:"目標達成"] += 1
145
+ elsif roulette.money >= 所持金
146
+ 結果[:"増加"] += 1
147
+ else
148
+ 結果[:"敗北"] += 1
149
+ end
150
+ }
151
+ # 結果を表示して終了
152
+ a = 目標達成/n
153
+ b = 増加/n
154
+ c = 敗北/n
155
+ ```
156
+ 回答を参考に考えをまとめました。文法は間違いだらけです
92
- こにより詳細な情報記載してくださ
157
+ から手つければ良でしょうか?

1

書式の改善

2019/05/24 15:15

投稿

wpx-vv1uZ
wpx-vv1uZ

スコア23

title CHANGED
@@ -1,1 +1,1 @@
1
- ruby, 繰り返しの繰り返し, メソット?クラス?
1
+ ruby, 繰り返しの繰り返し, メソット?クラス?,マーチンゲール法,シミュレーション
body CHANGED
@@ -1,7 +1,6 @@
1
1
  ### 前提・実現したいこと
2
2
  マーチンゲール法のシミュレーションをrubyでやろうとしています
3
3
 
4
- ### 発生している問題・エラーメッセージ
5
4
  [1つ目の作業]
6
5
  所持金・賭ける金額・目標金額を設定します。
7
6
  所持金が賭ける金額に足りなくなるか、目標金額に達したら処理を終わります
@@ -29,6 +28,8 @@
29
28
   掛け金を所持金から引く
30
29
   掛け金を二倍にする
31
30
 
31
+ ### 発生している問題・エラーメッセージ
32
+ 処理の繋げ方が分かりません
32
33
  ### 該当のソースコード
33
34
 
34
35
  ```ruby