Эмпирический подход.
Давайте реализуем ошибочный алгоритм в Mathematica:
p = 10; (* Range *)
s = {}
For[l = 1, l <= 30000, l++, (*Iterations*)
a = Range[p];
For[k = 1, k <= p, k++,
i = RandomInteger[{1, p}];
temp = a[[k]];
a[[k]] = a[[i]];
a[[i]] = temp
];
AppendTo[s, a];
]
Теперь определите, сколько раз каждое целое число находится в каждой позиции:
r = SortBy[#, #[[1]] &] & /@ Tally /@ Transpose[s]
Давайте возьмем три позиции в полученных массивах и построим график распределения частот для каждого целого числа в этой позиции:
Для позиции 1 распределение частот:
Для позиции 5 (в середине)
А для позиции 10 (последняя):
и здесь у вас есть распределение для всех позиций, построенных вместе:
Вот вам лучше статистика по 8 позициям:
Некоторые наблюдения:
- Для всех позиций вероятность
«1» - это то же самое (1 / n).
- Матрица вероятностей симметрична
по отношению к большой анти-диагонали
- Итак, вероятность для любого числа в последнем
позиция также равномерна (1 / n)
Вы можете визуализировать эти свойства, глядя на начало всех линий из одной и той же точки (первое свойство) и последней горизонтальной линии (третье свойство).
Второе свойство видно из следующего примера представления матрицы, где строки - это позиции, столбцы - это число жителей, а цвет представляет экспериментальную вероятность:
Для матрицы 100x100:
Редактировать
Ради интереса я вычислил точную формулу для второго диагонального элемента (первый равен 1 / n). Остальное можно сделать, но это много работы.
h[n_] := (n-1)/n^2 + (n-1)^(n-2) n^(-n)
Значения проверены от n = 3 до 6 ({8/27, 57/256, 564/3125, 7105/46656})
Редактировать
Поработав немного о явных вычислениях в @wnoise answer, мы можем получить немного больше информации.
Заменив 1 / n на p [n], чтобы вычисления оставались неоцененными, мы получаем, например, для первой части матрицы n = 7 (щелкните, чтобы увидеть увеличенное изображение):
Что, после сравнения с результатами для других значений n, определим некоторые известные целочисленные последовательности в матрице:
{{ 1/n, 1/n , ...},
{... .., A007318, ....},
{... .., ... ..., ..},
... ....,
{A129687, ... ... ... ... ... ... ..},
{A131084, A028326 ... ... ... ... ..},
{A028326, A131084 , A129687 ... ....}}
Вы можете найти эти последовательности (в некоторых случаях с разными знаками) в замечательном http://oeis.org/
Решение общей проблемы сложнее, но я надеюсь, что это начало