Возможно ли для равномерного дискретного распределения (iform_int_distribution) генерировать последовательные (или одинаковые) числа при правильном использовании?

Собираюсь разместить мою правку здесь:

В комментариях обсуждается фактический характер случайности. Что я понимаю, так это то, что при генерировании "случайных" чисел ни одно число не может быть более или менее вероятно, чем другое.

Надеюсь, более справедливое перефразирование моего вопроса:

Если ни одно число не является более или менее вероятным, чем другое, то почему же функция равномерного распределения может вызывать себя так, что если числа не всегда будут распределены равномерно?


Просто чтобы быть ясным, прежде чем я спрашиваю, я прошу только из любопытства. К счастью для меня, я не кошка.

Я создал функцию быстрой сортировки для университетского проекта и подумал, что, возможно (вместо того, чтобы просто ударить по клавиатуре какое-то время), я мог бы протестировать ее с некоторыми списками целых чисел, сгенерированными случайным образом.

std::vector<int> unsorted_list;
std::random_device ran_dev; // Initialise a new random device
std::uniform_int_distribution<> uni_dist(1, 100); // Create Uniform Distribution
for (int i = 0; i < 5; i++) {
    unsorted_list.push_back(uni_dist(ran_dev));
}

Могу ли я полностью полагаться на эту реализацию для получения случайных чисел, которые всегда кажутся действительно случайными (равномерно распределенными)?

Вы можете подумать, что я глупый... Понятно, что класс утверждает, что это равномерное распределение, то есть невозможно быть неоднородным... Но возможен ли какой-либо из этих выводов? И если да, то насколько вероятно?

(1, 1, 1, 1, 1)
(1, 2, 3, 4, 5)
(2, 4, 6, 8, 10)

Я полагаю, что последний вывод более вероятен, чем первый или второй (особенно при использовании границ от 0 до 100), но мое любопытство все еще имеет меня.
Я особенно глуп? Я никогда не очень хорошо разбирался в математике, поэтому, хотя я начинаю понимать символы и терминологию, я все еще смотрю на некоторые объяснения и просто "застеваю", так что мой поиск в Google до сих пор не помог.

1 ответ

Решение

У вас гораздо больше шансов получить список с большим количеством разных чисел, чем список с большим количеством повторов. Тем не менее, истинный ГСЧ будет производить любое число единиц в строке, если используется достаточно долго, и, поскольку предполагается, что ГСЧ выглядит как истинный ГСЧ, можно ожидать, что ГСЧ будет делать то же самое.

Истинные RNG обычно проходят независимые испытания, то есть результаты одного испытания ничего не говорят вам о результатах другого. Знание того, что сто раз подряд выпало, ничего не говорит вам о том, что будет делать такой ГСЧ в следующем испытании. Поскольку PRNG должны выглядеть как RNG, вы можете ожидать от них того же.

Таким образом, можно, хотя и маловероятно, получить много повторов. Если вы не хотите повторений, я бы порекомендовал выбрать элементы самостоятельно, а затем перетасовать. Таким образом, порядок является случайным, тогда как элементы имеют любое распределение, которое вы хотите, точно.

Другие вопросы по тегам