Как создать список перемешанных целых чисел между 2 числами? - PullRequest
1 голос
/ 05 августа 2011

Я хочу создать перемешанный набор целых чисел, такой что:

  1. При одинаковом начальном числе перемешивание будет одинаковым каждый раз
  2. По мере того, как я выполняю итерацию, каждое числов случайном порядке набор будет использоваться ровно один раз, а затем повторяться
  3. Будет работать для больших наборов (я хочу, чтобы все числа были в диапазоне от 0 до 2 миллиардов)
  4. Будет генерироваться в диапазоне, например, 100до 150.

Эта опция дает отличное решение, если вы хотите, скажем, все числа от 0 до указанного числа: Генерация перетасованного диапазона с использованием PRNG, а не перестановки

Есть идеи?

1 Ответ

1 голос
/ 05 августа 2011

Вы можете использовать тот же алгоритм, что и связанный вопрос.Просто сгенерируйте числа от 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) вокруг тела метода итератора.

...