鈴鹿の住処

■UiPath Tips■

更新日:  作成日:

乱数を生成する

■はじめに

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」で検索して、設定する必要があります。

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