C#
 Computer >> コンピューター >  >> プログラミング >> C#

C#のRandom.Next()メソッドの使い方を徹底解説

C#のRandom.Next()メソッドは、負でない(0以上の)ランダムな整数を返すためのメソッドです。乱数が必要な場面、たとえばゲームの抽選処理やテストデータの生成などでよく使われます。

構文

Random.Next()メソッドには複数のオーバーロードが用意されています。

public virtual int Next ();
public virtual int Next (int maxVal);
public virtual int Next (int minVal, int maxVal);
  • 引数なし:0以上、int.MaxValue未満のランダムな整数を返します。
  • maxVal指定:0以上、maxVal未満のランダムな整数を返します。maxValは排他的な上限値です。
  • minVal・maxVal指定:minVal以上、maxVal未満の範囲でランダムな整数を返します。

サンプルコード1:基本的な使い方

まずは引数なしで呼び出す基本例を見てみましょう。

using System;
public class Demo {
    public static void Main(){
        Random r = new Random();
        Console.WriteLine("ランダムな数値.....");
        for (int i = 1; i <= 5; i++)
            Console.WriteLine(r.Next());
    }
}

実行結果

ランダムな数値.....
1014639030
1510161246
1783253715
487417801
249480649

このように、非常に大きな整数がランダムに出力されます。実行するたびに結果は変わります。

サンプルコード2:上限値を指定する

次に、maxValを指定して「1から10まで」のような範囲の乱数を取得する例です。

using System;
public class Demo {
    public static void Main(){
        Random r = new Random();
        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(r.Next(10));
    }
}

実行結果

ランダムな数値.....
613432308
1705125884
1787561614
1243383842
2016323534

1から10までのランダムな数値.....
2
7
8
5
9

r.Next(10)は0から9までの整数を返す点に注意してください。10自体は含まれません(排他的上限)。もし1から10までの値が必要な場合は、r.Next(1, 11)のように最小値と最大値を両方指定するとよいでしょう。

まとめ

Random.Next()メソッドを使うことで、C#では簡単に乱数を生成できます。用途に応じて引数なし・上限値指定・範囲指定の3つのオーバーロードを使い分けましょう。なお、連続して複数のRandomインスタンスを作成すると同じシード値になり同一の乱数列が生成されることがあるため、通常は1つのインスタンスを使い回すのが推奨されます。

  1. JavaScriptでランダムな数値を生成する方法|Math.random()の使い方を解説

    JavaScriptのMath.random()関数は、0以上1未満の範囲でランダムな浮動小数点数を生成するために使用されます。戻り値は「0以上・1未満」であり、1自体は含まれない点に注意してください。この関数を活用すれば、サイコロのようなランダムな整数の生成や、くじ引き・シャッフル処理など、さまざまな場面で乱数を利用できます。Math.random()で1〜10のランダムな整数を生成する方法1から10までのランダムな整数を取得するには、Math.random()の結果に10を掛け、Math.floor()で小数点以下を切り捨てた後、1を加算します。数式で表すと以下のようになります。Math.

  2. C++でランダムポインタを持つリンクリストをディープコピーする方法

    ランダムポインタを持つリンクリストとはリンクリスト(連結リスト)は代表的な線形データ構造の一つで、各ノードは「ノードが保持する値(データ)」と「次のノードのアドレスを格納するポインタ(next)」という2つの部分で構成されます。本記事では、さらに各ノードがリスト内の別のノードを指す「ランダムポインタ(random)」を持つリンクリストを扱います。このようなリストに対して、元のリストと同じデータ・同じランダムポインタ構造を持つ新しいリストを作成することを、リンクリストの「ディープコピー(Deep Copy)」と呼びます。例入力:出力:5-> 2 -> 3 -> 7 ->4