Randomクラスでは、一つのインスタンスが一つの乱数系列として動作します。 またRandomクラスでは、個々のインスタンスに異なるシード値(seed, 乱数の種)を与えることにより、複数の乱数系列を生成することができます。
Randomクラスのコンストラクタでは、乱数系列のシード値を指定することができます。 このとき、同一のシード値を与えた場合は同一の乱数系列となり、同じ乱数を生成します。 これにより、インスタンスを生成したときのシード値を保存しておくことで、そのときと同じ乱数を生成するという使い方もできます。
シード値を指定してRandomクラスのインスタンスを作成する
Imports System
Class Sample
Shared Sub Main()
Dim rand1 As New Random(0) ' シード値(0)を与えてインスタンスを作成する
Dim rand2 As New Random(1)
Dim rand3 As New Random(1) ' rand2と同じシード値のインスタンスを作成する
Const format As String = "{0,-6} {1,-6} {2,-6}"
Console.WriteLine(
format,
NameOf(rand1),
NameOf(rand2),
NameOf(rand3)
)
' 各インスタンスから乱数を生成して表示する
For i As Integer = 1 To 15
Console.WriteLine(
format,
rand1.Next(0, 100),
rand2.Next(0, 100),
rand3.Next(0, 100)
)
Next
End Sub
End Class
実行結果
rand1 rand2 rand3 72 24 24 81 11 11 76 46 46 55 77 77 20 65 65 55 43 43 90 35 35 44 94 94 97 10 10 27 64 64 29 2 2 46 24 24 63 32 32 46 98 98 98 68 68