RandomNumberGeneratorクラスを使って乱数を生成するには、GetBytesメソッドを使います。 GetBytesメソッドは、Random.NextBytesメソッドと同様のメソッドで、引数として与えられたバイト配列を乱数で満たします。
RandomNumberGenerator.GetBytesメソッドでバイト配列を乱数で満たす
using System;
using System.Security.Cryptography;
class Sample {
static void Main()
{
using var rng = RandomNumberGenerator.Create();
// RandomNumberGeneratorを使って16バイトのnonce値を3個生成する
var nonce = new byte[16];
for (var i = 0; i < 3; i++) {
rng.GetBytes(nonce);
Console.WriteLine(BitConverter.ToString(nonce));
}
}
}
実行結果の一例
44-55-FB-46-91-80-CB-8E-EC-52-5A-06-48-13-46-B5 F7-30-40-46-6E-1B-80-00-B5-61-D5-13-0D-3A-BD-9E 5C-A6-2D-70-FF-55-BA-BF-E5-A1-D1-F8-94-1D-55-A6
Randomクラスとは異なり、RandomNumberGeneratorはシード値を必要としません。 RandomNumberGeneratorでは、インスタンスに関わらずメソッド呼び出し毎に異なる乱数を得ることができます。