В одном из моего проекта я столкнулся с необходимостью созданием набора чисел в заданном диапазоне, который будет:генератора Исчерпывающих случайных чисел
Исчерпывающим, что означает, что она будет покрывать большую часть данный диапазон без повторения.
Это гарантирует детерминизм (каждый раз, когда последовательность будет ). Вероятно, этого можно достичь с помощью фиксированного семени.
Будет случайным (я не очень разбираюсь в теории случайных чисел, но я предполагаю, что существует множество правил, описывающих случайность. С точки зрения что-то вроде 0,1,2..N не является случайным).
Изменяется я говорю о том, могут быть диапазоны чисел или действительных чисел.
Например, если я использовал стандартный C# генератор случайных чисел для генерации 10 чисел в диапазоне [0, 9] Я получаю это:
0 0 1 2 0 1 5 6 2 6
Как вы можете видеть, большая часть данного диапазона по-прежнему остается «неисследованный», и есть много повторений.
Конечно, пространство ввода может быть очень большим, поэтому запоминание ранее выбранных значений не является вариантом.
Что было бы правильным способом решить эту проблему?
Спасибо.
После комментариев: Хорошо, я согласен с тем, что случайное слово не является правильным, но я надеюсь, что вы поняли, чего я пытаюсь достичь. Я хочу изучить заданный диапазон, который может быть большим, поэтому в списке памяти не вариант. Если диапазон (0, 10), и я хочу три числа, я хочу гарантировать, что эти числа будут отличаться и что они будут «описывать диапазон» (т. Е. Они не будут в нижней половине и т. Д.).
Часть детерминизма означает, что я хотел бы использовать что-то вроде стандартного rng с фиксированным семенем, поэтому я могу полностью контролировать последовательность.
Надеюсь, я сделал вещи немного яснее.
Спасибо.
Случайное случайное, если вы не хотите повторения, вы не хотите случайного – JohnJohnGa
Для десяти * поистине * случайных чисел от 1 до 10 вы ожидали бы около трех дубликатов и около трех недостающих чисел. Если вы не хотите разрешать повторение, вам не нужны истинные случайные числа. Google для парадокса рождения. – wildplasser
@SINTER, какой у вас диапазон? – JohnJohnGa