更新日: 作成日:
乱数を生成する
■はじめに
UiPath Studio の Random クラスの各メソッドから乱数を生成する方法を紹介します。
Next メソッドは、0 以上のランダムな整数を返します。
NextDouble メソッドは、0.0 以上 1.0 未満のランダムな小数を返します。
既定のシード値は、 Random クラスをインスタンス化した時点のシステム クロックによって決まります。
各メソッドを実行する度に、新しい乱数が取得できます。
new Random().Next(1, 100) のようにして、1~99の指定の範囲内の乱数を取得することもできます。
VB.Net のメソッドや関数は、代入や条件分岐のアクティビティなどの VB の式を入力する欄で使用することができます。
クラスのメソッドを使用するには、インスタンス化を行う必要があります。
■メソッドの引数と戻り値
new Random().Next()
0 以上のランダムな整数を返します。
戻り値の型・・・数値型(Int32)
new Random().Next(数値)
指定した最大値より小さい 0 以上のランダムな整数を返します。
指定する数値は、 0 以上の数値を指定する必要があります。
戻り値の型・・・数値型(Int32)
new Random().Next(数値1,数値2)
指定した範囲内のランダムな整数を返します。
数値1 は 数値2 未満の数値を指定する必要があります。
戻り値の型・・・数値型(Int32)
new Random().NextDouble()
0.0 以上 1.0 未満のランダムな小数を返します。
戻り値の型・・・数値型(Double)
■解説
Next メソッドは、 0 以上の乱数、もしくは、指定された範囲内の乱数を返します。
NextDouble メソッドは、範囲を指定できず、0.0 以上 1.0 未満の乱数を返します。
new Random().NextDouble() * 5 のようにして、 0 以上 5 未満のランダムな小数を取得することができます。
シード値
Random クラスによって返ってくる乱数は、シード値によって決まっています。
シード値が同じ Random オブジェクトであれば、毎回決まった順番で乱数が返ってきます。
シード値は Random クラスをインスタンス化した時点のシステム クロックによって決まります。
そのため、連続してインスタンス化された異なる Random オブジェクトは同じ既定のシード値となります。
シード値はインスタンス化する際に、 new Random(数値) のように指定することもできます。
■使用例
Random クラスの各メソッドの使用例を紹介します。
Random クラスのインスタンス化
クラスのメソッドを使用するには、インスタンス化を行う必要があります。
何度もメソッドを使う場合には、変数に格納して Random オブジェクトを作成することで、インスタンス化は Random オブジェクトを作成時だけになります。
Random オブジェクトを作成する場合、格納する変数の型は System.Random にします。
「System.Random」が変数の型のプルダウンに無い場合は、[型の参照...(Browse for Types...)] > [.NET型を参照して選択] ウィンドウで「System.Random」で検索して、設定する必要があります。
シード値を設定する
インスタンス化する際に、 new Random(数値) のようにしてシード値を指定することができます。
シード値を指定しない場合は、既定のシード値としてインスタンス化した時点のシステム クロックに基づいたシード値が設定されます。
異なる Random オブジェクトを同じシード値を設定したり、連続してインスタンス化した場合、毎回決まった順番で乱数が返ってきます。
ランダムな値を生成する
変数 rnd の型は System.Random
rnd = new Random() インスタンス化
変数 i の型は Int32
i = rnd.Next() 1185254744
i = rnd.Next() 2135821240
i = rnd.Next() 1559881591
i = rnd.Next() 1463841891
i = rnd.Next() 266923408
変数 d の型は System.Double
d = rnd.NextDouble() 0.57196388187444014
d = rnd.NextDouble() 0.16839210231247923
d = rnd.NextDouble() 0.5375944192230675
d = rnd.NextDouble() 0.48207658691428446
d = rnd.NextDouble() 0.084435859734395449
範囲を指定してランダムな値を生成する
変数 rnd の型は System.Random
rnd = new Random() インスタンス化
変数 i の型は Int32
i = rnd.Next(1) 0のみが返ってくる
i = rnd.Next(11) 0~10がランダムで返ってくる
i = rnd.Next(-1) ArgumentOutOfRangeException
i = rnd.Next(5,6) 5のみが返ってくる
i = rnd.Next(1,11) 1~10がランダムで返ってくる
i = rnd.Next(11,1) ArgumentOutOfRangeException
i = rnd.Next(-5,6) -5~5がランダムで返ってくる
変数 d の型は System.Double
d = rnd.NextDouble() * 5 2.763264152576804
d = rnd.NextDouble() * 5 0.55328170096188867
d = rnd.NextDouble() * 5 4.6341004570173565
d = rnd.NextDouble() * 5 0.39023806824825613
d = rnd.NextDouble() * 5 1.79174813525367