web-dev-qa-db-ja.com

C#を使って範囲内の乱数を生成する

範囲内で乱数を生成する方法は?

225
RoR

あなたが試すことができます

Random r = new Random();
int rInt = r.Next(0, 100); //for ints
int range = 100;
double rDouble = r.NextDouble()* range; //for doubles

見て

ランダムクラスRandom.Nextメソッド(Int32、Int32) and Random.NextDoubleメソッド

361
Adriaan Stander

以下のコードを試してください。

Random rnd = new Random();
int month = rnd.Next(1, 13); // creates a number between 1 and 12
int dice = rnd.Next(1, 7); // creates a number between 1 and 6
int card = rnd.Next(52); // creates a number between 0 and 51
32
Vishal Kiri

何かのようなもの:

var rnd = new Random(DateTime.Now.Millisecond);
int ticks = rnd.Next(0, 3000);
31
ozczecho

つかいます:

Random r = new Random();
 int x= r.Next(10);//Max range
11
Kay

将来の読者のために、範囲内の乱数が欲しい場合は以下のコードを使用してください。

public double GetRandomNumberInRange(double minNumber, double maxNumber)
{
    return new Random().NextDouble() * (maxNumber - minNumber) + minNumber;
}

C#最小値と最大値の間のランダムな倍精度

コードサンプル

7
Darrelk

整数と倍精度を生成する ランダムクラス とは別に、以下を考慮してください。

3
Ohad Schneider

Darrelk answer からの更新バージョンです。 C#拡張メソッド を使用して実装されます。このメソッドが呼び出されるたびに、メモリを割り当てませんnew Random())。

public static class RandomExtensionMethods
{
    public static double NextDoubleRange(this System.Random random, double minNumber, double maxNumber)
    {
        return random.NextDouble() * (maxNumber - minNumber) + minNumber;
    }
}

使用法(RandomExtensionMethodsクラスを含むネームスペースを必ずインポートしてください):

var random = new System.Random();
double rx = random.NextDoubleRange(0.0, 1.0);
double ry = random.NextDoubleRange(0.0f, 1.0f);
double vx = random.NextDoubleRange(-0.005f, 0.005f);
double vy = random.NextDoubleRange(-0.005f, 0.005f);
0