30

C# の乱数ジェネレーターがどのように機能するのか疑問に思っていました。また、1 から 100 までのランダムなWHOLE INTEGER番号を生成するプログラムを作成する方法にも興味がありました。

4

4 に答える 4

32

使用できますRandom.Next(int maxValue)

戻り値: ゼロ以上で maxValue 未満の 32 ビットの符号付き整数。つまり、通常、戻り値の範囲にはゼロが含まれますが、maxValue は含まれません。ただし、maxValue がゼロの場合は、maxValue が返されます。

var r = new Random();
// print random integer >= 0 and  < 100
Console.WriteLine(r.Next(100));

ただし、この場合、次Random.Next(int minValue, int maxValue)のようにを使用できます。

// print random integer >= 1 and < 101
Console.WriteLine(r.Next(1, 101);)
// or perhaps (if you have this specific case)
Console.WriteLine(r.Next(100) + 1);
于 2012-11-24T09:32:14.180 に答える
24

C# の乱数ジェネレーターがどのように機能するのか疑問に思っていました。

これは実装固有ですが、疑似乱数ジェネレーターのウィキペディアのエントリは、いくつかのアイデアを提供するはずです。

また、1 から 100 までのランダムな WHOLE INTEGER 番号を生成するプログラムを作成する方法にも興味がありました。

使用できますRandom.Next(int, int)

Random rng = new Random();
for (int i = 0; i < 10; i++)
{
    Console.WriteLine(rng.Next(1, 101));
}

上限は排他的であることに注意してください。これが、ここで 101 を使用した理由です。

関連するいくつかの「落とし穴」にも注意する必要がありますRandom。特に、乱数を生成するたびに新しいインスタンスを作成しないでください。そうしないと、短時間に大量の乱数を生成する場合と同様です。 、多くの繰り返しが表示されます。詳細については、このトピックに関する私の記事を参照してください。

于 2012-11-24T09:33:04.610 に答える
0

私はしばらくの間インターネットでRNGを検索してきました。私が見たものはすべて複雑すぎるか、私が探していたものではありませんでした。いくつかの記事を読んだ後、私はこの単純なコードを思いつくことができました。

{
  Random rnd = new Random(DateTime.Now.Millisecond);
  int[] b = new int[10] { 5, 8, 1, 7, 3, 2, 9, 0, 4, 6 };
  textBox1.Text = Convert.ToString(b[rnd.Next(10)])
}

簡単な説明、

  1. 1次元整数配列を作成します。
  2. 順序付けられていない番号で配列をいっぱいにします。
  3. rnd.Nextを使用して、選択される番号の位置を取得します。

これはうまく機能します。

100未満の乱数を取得するには、

{
  Random rnd = new Random(DateTime.Now.Millisecond);
  int[] b = new int[10] { 5, 8, 1, 7, 3, 2, 9, 0, 4, 6 };
  int[] d = new int[10] { 9, 4, 7, 2, 8, 0, 5, 1, 3, 4 };
  textBox1.Text = Convert.ToString(b[rnd.Next(10)]) + Convert.ToString(d[rnd.Next(10)]);
}

3、4、5、および6...桁の乱数の場合も同様です。

これが誰かを積極的に助けることを願っています。

于 2013-03-13T11:18:24.770 に答える