Randomクラスには、乱数を得るためのメソッドがいくつか用意されています。 求める乱数の型・値域によって、次のメソッドを使い分けることができます。 いずれも得られる乱数の値域は半開区間(n以上m未満)となっています。
- NextDoubleメソッド
- 0.0以上1.0未満の乱数を実数(Double)で取得する。 [0.0, 1.0)
- Nextメソッド
- 乱数を整数(Int32)で取得する。 以下のオーバーロードが用意されている。
- Next()
- 0以上の乱数を取得する。 [0, Int32.MaxValue)
- Next(max)
- 0以上max未満の乱数を取得する。 [0, max)
- Next(min, max)
- min以上max未満の乱数を取得する。 [min, max)
なお、NextDoubleメソッドには任意の値域を指定するバージョンは用意されていないため、NextDoubleの戻り値を加減乗除して求める値域に変換する必要があります。
Random.NextDoubleメソッドで実数の乱数を生成する
Imports System
Class Sample
Shared Sub Main()
Dim rand As New Random()
For i As Integer = 1 To 20
' 0以上1未満の乱数を生成したのち、値域を0以上2未満に変換する
Console.Write("{0:F1}, ", 2.0 * rand.NextDouble())
Next
Console.WriteLine()
For i As Integer = 1 To 20
' 0以上1未満の乱数を生成したのち、値域を-1以上+1未満に変換する
Console.Write("{0:F1}, ", 2.0 * rand.NextDouble() - 1.0)
Next
Console.WriteLine()
End Sub
End Class
実行結果の一例
1.8, 2.0, 1.7, 1.5, 0.3, 0.3, 0.6, 0.0, 0.1, 1.3, 1.7, 0.1, 1.1, 0.5, 2.0, 0.2, 1.1, 1.1, 1.7, 1.4, 0.3, -0.2, 0.7, -0.9, -0.8, -0.1, 0.8, -0.3, -0.0, -0.3, 0.6, -0.8, 0.5, 0.5, 0.3, 0.7, -0.3, 0.9, 0.8, -0.1,