Looking for vb.net Answers? Try Ask4KnowledgeBase
Looking for vb.net Keywords? Try Ask4Keywords

Visual Basic .NET Languageランダム


前書き

Randomクラスは、本当にランダムではない非負の疑似乱数を生成するために使用されますが、一般的な目的には十分近いです。

シーケンスは初期番号( シードと呼ばれます)を使用して計算されます。以前のバージョンの.netでは、このシード番号はアプリケーションが実行されるたびに同じでした。だから、アプリケーションが実行されるたびに同じ擬似乱数列を得るということが起こります。さて、シードは、オブジェクトが宣言された時間に基づいています。

備考

最後に、ランダム化についての注釈。前述のように、パラメータなしでRandomインスタンスを宣言すると、コンストラクタは現在の時刻を計算の一部として使用して初期シード番号を作成します。通常これはOKです。

しかしながら。非常に短い時間間隔で新しいインスタンスを再宣言すると、シード番号が計算されるたびに、時間は同じになる可能性があります。このコードを考えてみましょう。

For i As Integer = 1 To 100000
    Dim rnd As New Random
    x = rnd.Next
Next

最近のコンピュータは非常に高速であるため、このコードの実行には数分の1秒かかります。また、ループのいくつかの不確定な繰り返しでは、システム時間は変更されません。したがって、シード番号は変更されず、乱数も同じになります。たくさんの乱数を生成したい場合、この単純な例では、ループの外側にrandomのインスタンスを宣言してください。

Dim rnd As New Random
For i As Integer = 1 To 100000
    x = rnd.Next
Next

経験則の基本は、乱数ジェネレータを短期間に再インスタンス化しないことです。

ランダム 関連する例