1

次のようなシャッフルされた整数のセットを作成したいと思います。

  1. 同じシードが与えられると、シャッフルは毎回同じになります
  2. 繰り返しますが、シャッフルされたセットのすべての番号は、繰り返される前に1回だけ使用されます。
  3. 大規模なセットで機能します(0から20億の間のすべての数値が必要です)
  4. たとえば、100〜150の範囲で生成されます。

このオプションは、たとえば、0から指定された数までのすべての数値が必要な場合に優れたソリューションを提供します。シャッフルではなくPRNGを使用してシャッフルされた範囲を生成する

何か案は?

4

1 に答える 1

1

リンクされた質問とまったく同じアルゴリズムを使用できます。0 と 0 の間の数値を生成し、結果upperBound - lowerBound + 1に追加するだけです。lowerBound

例(リンクされた質問のコードを使用):

var upper = 5;
var lower = 3;
foreach (int n in GenerateSequence(upper-lower+1))
{
    Console.WriteLine(n+lower);
}

シーケンスを繰り返す (毎回異なるシャッフルを行う) 場合はwhile (true)、 iterator メソッド本体の周りに を追加できます。

于 2011-08-04T23:53:51.960 に答える