質問編集履歴

3

質問の追加

2019/05/24 15:45

投稿

wpx-vv1uZ
wpx-vv1uZ

スコア23

test CHANGED
File without changes
test CHANGED
@@ -311,3 +311,99 @@
311
311
  回答を参考に考えをまとめました。文法は間違いだらけです
312
312
 
313
313
  どこから手をつければ良いでしょうか?
314
+
315
+
316
+
317
+ ```ruby
318
+
319
+ print "所持金を入力してください:"
320
+
321
+ x = gets.chomp.to_i
322
+
323
+ v = x
324
+
325
+ print "最初の掛け金を入力してください:"
326
+
327
+ y = gets.chomp.to_i
328
+
329
+ u = y
330
+
331
+ print "目標金額を入力してください:"
332
+
333
+ z = gets.chomp.to_i
334
+
335
+
336
+
337
+ print "試行回数を入力してください:"
338
+
339
+ n = gets.chomp.to_i
340
+
341
+
342
+
343
+ i = 0
344
+
345
+ a = 0
346
+
347
+ b = 0
348
+
349
+ c = 0
350
+
351
+
352
+
353
+ n.times do
354
+
355
+ until v < u || v >= z do
356
+
357
+ i += 1
358
+
359
+ roulette = rand(2)
360
+
361
+ i_choice = rand(2)
362
+
363
+ if roulette == i_choice
364
+
365
+ v += u + 1000
366
+
367
+ u = y
368
+
369
+ else
370
+
371
+ v -= u
372
+
373
+ u *= 2
374
+
375
+ end
376
+
377
+ end
378
+
379
+
380
+
381
+ if v >= z
382
+
383
+ a += 1
384
+
385
+ elsif v < u and v >= x
386
+
387
+ b += 1
388
+
389
+ else
390
+
391
+ c += 1
392
+
393
+ end
394
+
395
+ end
396
+
397
+
398
+
399
+ puts [a,b,c]
400
+
401
+
402
+
403
+ ```
404
+
405
+ 最初に書いたコードがこれでした
406
+
407
+ このコードだと、[a,b,c]のどれか1つに試行結果がいってしまうので何か間違いがあるのはわかるのですが、具体的な所が分かりません。
408
+
409
+ 何がいけないのでしょうか?

2

コードの改善?

2019/05/24 15:44

投稿

wpx-vv1uZ
wpx-vv1uZ

スコア23

test CHANGED
File without changes
test CHANGED
@@ -178,6 +178,136 @@
178
178
 
179
179
  ### 補足情報(FW/ツールのバージョンなど)
180
180
 
181
-
181
+ ```ruby
182
+
182
-
183
+ =begin[賭けのルール]
184
+
185
+ 赤と黒のみのルーレットを想定
186
+
187
+ 指定した色なら勝ち、違うなら負け
188
+
189
+ ・勝った場合
190
+
191
+ 掛け金+1000を所持金に足す
192
+
193
+ 掛け金を一番最初の額に戻す
194
+
195
+ ・負けた場合
196
+
197
+ 掛け金を所持金から引く
198
+
199
+ 掛け金を二倍にする
200
+
201
+ =end
202
+
203
+ class Roulette
204
+
205
+ x = 0
206
+
207
+ y = 0
208
+
209
+ u = y
210
+
211
+ z = 0
212
+
213
+ roulette = rand(2)
214
+
215
+ i_choice = rand(2)
216
+
217
+ if roulette == i_choice
218
+
219
+ x += u + 1000
220
+
221
+ u = y
222
+
223
+ else
224
+
225
+ w -= u
226
+
227
+ u *= 2
228
+
229
+ end
230
+
231
+ end
232
+
233
+
234
+
235
+ # 初期設定を入力
236
+
237
+ x,y,z = gets.split.map(&:to_i)
238
+
239
+ #x:所持金、y:掛け金、z:目標金額
240
+
241
+
242
+
243
+ # 試行回数を入力
244
+
245
+ n = gets.to_i
246
+
247
+ #インスタンス変数として掛け金と所持金をもち賭けを実行するメソッド
248
+
249
+ def roulette.bet
250
+
251
+ @u = x
252
+
253
+ @v = y
254
+
255
+ return do roulette
256
+
257
+ end
258
+
259
+ #所持金を返すメソッド
260
+
261
+ def roulette.money
262
+
263
+ return x
264
+
265
+ end
266
+
267
+ #続行可能かを判定するメソッド
268
+
269
+ def roulette.continue?
270
+
271
+ return x >= y and x < z
272
+
273
+ end
274
+
275
+
276
+
277
+ 結果 = {"目標達成": 0,"増加": 0, "敗北": 0}
278
+
279
+ n.times{
280
+
281
+ roulette = Roulette.new(x, y)
282
+
283
+ roulette.bet while roulette.money < z && roulette.continue?
284
+
285
+ if roulette.money >= 目標金額
286
+
287
+ 結果[:"目標達成"] += 1
288
+
289
+ elsif roulette.money >= 所持金
290
+
291
+ 結果[:"増加"] += 1
292
+
293
+ else
294
+
295
+ 結果[:"敗北"] += 1
296
+
297
+ end
298
+
299
+ }
300
+
301
+ # 結果を表示して終了
302
+
303
+ a = 目標達成/n
304
+
305
+ b = 増加/n
306
+
307
+ c = 敗北/n
308
+
309
+ ```
310
+
311
+ 回答を参考に考えをまとめました。文法は間違いだらけです
312
+
183
- こにより詳細な情報記載てください。
313
+ から手つければ良いでょうか?

1

書式の改善

2019/05/24 15:15

投稿

wpx-vv1uZ
wpx-vv1uZ

スコア23

test CHANGED
@@ -1 +1 @@
1
- ruby, 繰り返しの繰り返し, メソット?クラス?
1
+ ruby, 繰り返しの繰り返し, メソット?クラス?,マーチンゲール法,シミュレーション
test CHANGED
@@ -3,8 +3,6 @@
3
3
  マーチンゲール法のシミュレーションをrubyでやろうとしています
4
4
 
5
5
 
6
-
7
- ### 発生している問題・エラーメッセージ
8
6
 
9
7
  [1つ目の作業]
10
8
 
@@ -59,6 +57,10 @@
59
57
   掛け金を二倍にする
60
58
 
61
59
 
60
+
61
+ ### 発生している問題・エラーメッセージ
62
+
63
+ 処理の繋げ方が分かりません
62
64
 
63
65
  ### 該当のソースコード
64
66