C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[9]: また質問です


(過去ログ 25 を表示中)

[トピック内 10 記事 (1 - 10 表示)]  << 0 >>

■11379 / inTopicNo.1)  Do While について
  
□投稿者/ ドラゴン (7回)-(2007/12/13(Thu) 08:39:22)

分類:[VB.NET/VB2005] 

2007/12/13(Thu) 09:08:36 編集(投稿者)
2007/12/13(Thu) 08:41:37 編集(投稿者)

<pre><pre>VB2005 / VB2003

今回はDo While を使って コイン連続で投げて X回 表が連続でるまでに 何回投げる必要があるかどうかを算出するプログラムを作ろうとしてるのですがどうすればよいかまったくわかりません


Dim MyRandomGenerator As System.Random
MyRandomGenerator = New System.Random
Dim RanNum As Integer
RanNum = MyRandomGenerator.Next(0, 2) '0 = head

Val(TextBox2.Text)
Val(TextBox1.Text)

Dim Flips As Integer
Flips = 0
Dim Goal As Integer = 0
Dim Flip As Single


Do

If RanNum = 0 Then
Goal = Goal + 1
Flip = Flip + 1
Else
If RanNum = 1 Then
Goal = 0
Flip = Flip + 1
End If
End If

Loop Until Goal = TextBox1.Text
TextBox2.Text = Flip

今のところ ここまでできてます。
Textbox1.Text = (X)回
Textbox2.Text = (X)回出すまでにコインを何回投げた回数 という意味です</pre></pre>
引用返信 編集キー/
■11380 / inTopicNo.2)  Re[1]: また質問です
□投稿者/ επιστημη (716回)-(2007/12/13(Thu) 08:52:25)
επιστημη さんの Web サイト
2007/12/13(Thu) 08:55:06 編集(投稿者)
# もちっとマシなタイトルつけてください。「質問です」って、んなこたわかってます。

> 今回はDo While を使って コイン連続で投げて X回 表が連続でるまでに
> 何回投げる必要があるかどうかを算出するプログラムを作ろうとしてるのですが
> どうすればよいかまったくわかりません

いや、いぃとこまで来てるやん。

Dim X As Integer 目標とする連続表の回数
Dim Goal As Integer 表が連続した回数
Dim Flips As Integer コイントスの回数 
Dim RanNum As Integer 0なら表/1なら裏

Goal = 0
Flips = 0
Do
  Flips = Flips + 1
  RanNum = コインを投げる ' Do-loopの中でコインを投げないと表/裏ばっか出ちゃうよー
  If RanNumが表
    Goal = Goal + 1
  Else
    Goal = 0
  End If
While Goal < X
Flipを表示する

...こんなとこかしら。
TextBox.Textは文字列だから数と比較しちゃダメよ。

引用返信 編集キー/
■11382 / inTopicNo.3)  Re[2]: また質問です
□投稿者/ ドラゴン (8回)-(2007/12/13(Thu) 09:30:39)
>>11380
Dim MyRandomGenerator As System.Random
MyRandomGenerator = New System.Random
Dim RanNum As Integer
RanNum = MyRandomGenerator.Next(0, 2) '0 = head

Val(TextBox1.Text)
Val(TextBox2.Text)
Dim X As Integer = TextBox1.Text 'これでええのかな?
Dim Goal As Integer
Dim Flips As Integer

Goal = 0
Flips = 0

Do
Flips = Flips + 1 'ここが引っかかる
If RanNum = 0 Then
Goal = Goal + 1
Else
Goal = 0
End If
Loop Until Goal = X
While Goal < X
TextBox2.Text = Flips '表示されない

End While

このようになりましたが、ボタンおしても途中で固まってしまいました。
何処辺りミスったんだろう・・・
引用返信 編集キー/
■11383 / inTopicNo.4)  Re[3]: また質問です
□投稿者/ επιστημη (717回)-(2007/12/13(Thu) 09:33:26)
επιστημη さんの Web サイト
> このようになりましたが、ボタンおしても途中で固まってしまいました。
> 何処辺りミスったんだろう・・・

...人の話を聞け!

' Do-loopの中でコインを投げないと表/裏ばっか出ちゃうよー
ってゆーてるだろが。

引用返信 編集キー/
■11384 / inTopicNo.5)  Re[4]: また質問です
□投稿者/ ドラゴン (9回)-(2007/12/13(Thu) 09:36:14)
No11383 (επιστημη さん) に返信
>>このようになりましたが、ボタンおしても途中で固まってしまいました。
>>何処辺りミスったんだろう・・・
>
> ...人の話を聞け!
>
> ' Do-loopの中でコインを投げないと表/裏ばっか出ちゃうよー
> ってゆーてるだろが。
>


Do
Flips = Flips + 1 'ここが引っかかる
Dim MyRandomGenerator As System.Random
MyRandomGenerator = New System.Random
Dim RanNum As Integer
RanNum = MyRandomGenerator.Next(0, 2) '0 = head
If RanNum = 0 Then
Goal = Goal + 1
Else
Goal = 0
End If

つまり、こういう事ですか?
免罪符にするつもりはありませんが、自分、VBはじめたばかりなので。

引用返信 編集キー/
■11388 / inTopicNo.6)  Re[5]: また質問です
□投稿者/ επιστημη (719回)-(2007/12/13(Thu) 09:52:45)
επιστημη さんの Web サイト
2007/12/13(Thu) 10:06:27 編集(投稿者)
コイン投げ機械はひとつあればいいんだからloopの外。
"コインを投げる"操作がloop内にあればいい。
コンソール・アプリだとこんな感じ。

Module CoinToss
  Sub Main()
    Dim X As Integer '目標とする連続表の回数
    Dim Goal As Integer '表が連続した回数
    Dim Flips As Integer 'コイントスの回数 
    Dim RanNum As Integer '0なら表/1なら裏
    Dim MyRandomGenerator As New System.Random

    Goal = 0
    Flips = 0
    X = 4 ' --- ココいぢれ
    Do
      Flips = Flips + 1
      RanNum = MyRandomGenerator.Next(2)
      If RanNum = 0 Then
        Goal = Goal + 1
      Else
        Goal = 0
      End If
    Loop While Goal < X
    Console.WriteLine("{0}回投げました。", Flips) ' --- ココいぢれ
  End Sub
End Module

引用返信 編集キー/
■11390 / inTopicNo.7)  Re[6]: また質問です
□投稿者/ ドラゴン (10回)-(2007/12/13(Thu) 10:16:24)
No11388 (επιστημη さん) に返信
> 2007/12/13(Thu) 10:06:27 編集(投稿者)
>
> コイン投げ機械はひとつあればいいんだからloopの外。
> "コインを投げる"操作がloop内にあればいい。
> コンソール・アプリだとこんな感じ。

ああ〜わかりました
ではここから先は自分でやってみるとします
協力いただきありがとうございました。
解決済み
引用返信 編集キー/
■11398 / inTopicNo.8)  Re[7]: また質問です
□投稿者/ 774RR (84回)-(2007/12/13(Thu) 11:00:46)
乱数の質が悪いと無限にループする可能性は多々あるけどな
表→裏→表→裏→表→裏→表→裏→表→裏→
にしかならない腐った乱数もよくみかけるし。
System.Random の実装次第だな。詳細までは調べる気が無いな
解決済み
引用返信 編集キー/
■11414 / inTopicNo.9)  Re[8]: また質問です
□投稿者/ れい (302回)-(2007/12/13(Thu) 13:16:06)
No11398 (774RR さん) に返信
> System.Random の実装次第だな。詳細までは調べる気が無いな

まえここに書いた気がしますが、
System.RandomはKnuthの引き算法です。
こいつはなかなかいいものだと思いますが、大体2^50以上、2^60程度の周期になります。

ですので、「100回連続で」とかはたぶんダメです。
メルセンヌでツイストしないと…。
解決済み
引用返信 編集キー/
■11416 / inTopicNo.10)  Re[9]: また質問です
□投稿者/ επιστημη (720回)-(2007/12/13(Thu) 13:19:57)
επιστημη さんの Web サイト
> ですので、「100回連続で」とかはたぶんダメです。
> メルセンヌでツイストしないと…。

御参考: メルセンヌでツイストの後ベルヌってみますた。
http://blogs.wankuma.com/episteme/archive/2007/12/13/112757.aspx

解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -