C#のRandom.NextBytes()メソッドとは?使い方とサンプルコード解説
Random.NextBytes()メソッドとは
C#のRandom.NextBytes()メソッドは、指定したバイト型配列(byte配列)の全要素にランダムな数値を格納するためのメソッドです。テストデータの生成やID・トークンの作成など、ランダムなバイト列が必要な場面で活用できます。
構文
NextBytes()メソッドの構文は以下のとおりです。
public virtual void NextBytes (byte[] buffer);
引数bufferには、ランダムな値で埋めたいバイト型配列を指定します。メソッドを実行すると、配列の各要素が0〜255の範囲のランダムな値で上書きされます。なお、このメソッドには戻り値がなく、処理結果は引数として渡した配列に直接反映されます。
サンプルコード①:基本的な使い方
まずは基本的な使用例を見てみましょう。
using System;
public class Demo {
public static void Main() {
Random r = new Random();
Random r2 = new Random();
Random r3 = new Random();
Byte[] arr = new Byte[5];
r3.NextBytes(arr);
Console.WriteLine("生成された乱数.....");
for (int i = 1; i <= 5; i++)
Console.WriteLine(r.Next());
Console.WriteLine("\n1〜10の範囲の乱数.....");
for (int i = 1; i <= 5; i++)
Console.WriteLine(r2.Next(10));
Console.WriteLine("\nバイト配列に格納された乱数...");
for (int i = 0; i < arr.GetUpperBound(0); i++)
Console.WriteLine(arr[i]);
}
}実行結果
生成された乱数..... 2081486546 329484380 1639318640 1499756340 2122408387 1〜10の範囲の乱数..... 9 1 7 6 9 バイト配列に格納された乱数... 210 92 112 52
この例では、r.Next()で任意の整数の乱数を、r2.Next(10)で0以上10未満の乱数をそれぞれ5個ずつ生成しています。さらに、r3.NextBytes(arr)を呼び出すことで、長さ5のバイト配列にランダムな値が格納されます。
なお、ループ条件にarr.GetUpperBound(0)を使用しているため、配列の最後の要素(インデックス4)は表示されません。すべての要素を表示したい場合は、i < arr.Lengthのように指定するとよいでしょう。
サンプルコード②:短いバイト配列への格納
続いて、要素数2の小さなバイト配列に対してNextBytes()を使う例です。
using System;
public class Demo {
public static void Main() {
Random r = new Random();
Byte[] arr = new Byte[2];
r.NextBytes(arr);
Console.WriteLine("バイト配列に格納された乱数...");
for (int i = 0; i < 2; i++)
Console.WriteLine(arr[i]);
}
}実行結果
バイト配列に格納された乱数... 173 11
このように、配列のサイズに関わらず、NextBytes()を呼び出すだけで全要素にランダムな値が自動的に設定されます。プログラムを実行するたびに異なる値が得られる点も覚えておくと便利です。
まとめ
- Random.NextBytes(byte[] buffer)は、バイト配列の全要素を0〜255のランダムな値で埋めるメソッドである。
- 戻り値はvoidで、結果は引数として渡した配列に直接格納される。
- .NET 6以降では、
Span<byte>を受け取るオーバーロードも利用可能になっている。
-
JavaScriptでランダムな数値を生成する方法|Math.random()の使い方を解説
JavaScriptのMath.random()関数は、0以上1未満の範囲でランダムな浮動小数点数を生成するために使用されます。戻り値は「0以上・1未満」であり、1自体は含まれない点に注意してください。この関数を活用すれば、サイコロのようなランダムな整数の生成や、くじ引き・シャッフル処理など、さまざまな場面で乱数を利用できます。Math.random()で1〜10のランダムな整数を生成する方法1から10までのランダムな整数を取得するには、Math.random()の結果に10を掛け、Math.floor()で小数点以下を切り捨てた後、1を加算します。数式で表すと以下のようになります。Math.
-
RubyのArray#zipメソッド徹底解説!2つの配列をスマートに結合する方法
2つの配列を要素ごとに比較して、その違いを見つけたいと思ったことはありませんか? あるいは、各インデックスごとに最大の数値を求めたい、キーのリストと値のリストを組み合わせてハッシュを作りたい――そんな場面にも出会うことがあるでしょう。 …これを「面倒な方法」で実装すると、次のようなコードになります。 例:冗長な書き方 a = [1,2,3,4,5] b = [1,2,3,6,8] c = a.map.with_index { |_, idx| [a[idx], b[idx]] } # [[1, 1], [2, 2], [3, 3], [4, 6], [5, 8]] 確かに動作はしますが