Visual Basic 中学校 掲示板 投稿の管理
タグのない投稿を抽出
統計
RSS
Visual Basic 中学校
投稿一覧
VB.NETでビンゴゲーム作成
この投稿へのリンク
https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=9616#CommentId14556
この投稿の削除
削除パスワード
削除する
コメント本文
投稿者
魔界の仮面弁士
 (社会人)
投稿日時
2010/4/28 14:01:29
> 「Randomizeを使用しない場合、常に同じパターンで乱数が取得されてしまう。」
> ということは分かったのですが、それ以外に大きな問題があるのでしょうか?
主な理由としては、「n 以上 m 未満」という範囲の乱数を生成するのに都合が良いからです。
たとえば、『1000~9999 の範囲でランダムな番号を得たい』というケースにおいては、
Random クラスの方が扱いやすいです。Next メソッドで生成範囲を調整することできるからです。
一方 Rnd の方は、常に 0.0 以上 1.0 未満の値しか出力できないため、
範囲指定する際に、そこからさらに追加の計算処理が必要になってしまいます。
また、Rnd 関数よりも Random クラスの方の方が数値の偏りが少なくなるという利点もあります。
> Me.Label1.Text = MyRandom.Next(list.Count)
この部分が間違っています。
今回の Random の Next メソッドから得た値というのは、『ビンゴの玉に書かれた番号』や
『トランプの内容(4種のA,2,3,4,5,6,7,8,9,10,J,Q,K、およびジョーカー)』を
表しているわけではありません。
そうではなく、『トランプの山札で、上から何番目のカードかを表す値』を意味しています。
これはすなわち、list 変数内の位置を表す番号であるということです。
たとえば、Next メソッドで得た乱数を変数 n に格納していたとすれば、
カードの内容(ビンゴの玉に書かれた番号)は「list(n)」として得る事ができますし、
カードを抜く(ビンゴの玉を除去する)作業は、「list.RemoveAt(n)」で行えます。