投稿者 魔界の仮面弁士  (社会人) 投稿日時 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)」で行えます。