Ordena sesgo en la implementación incorrecta de Fisher Yates Shuffle

Implementé el algoritmo de barajar como:

import random a = range(1, n+1) #a containing element from 1 to n for i in range(n): j = random.randint(0, n-1) a[i], a[j] = a[j], a[i] 

Como este algoritmo está sesgado. Solo quería saber para cualquier n (n ≤ 17) , ¿es posible encontrar qué permutación tiene la mayor probabilidad de ocurrir y qué permutación tiene la menor probabilidad de todas las n posibles ? permutaciones Si es así, ¿qué es esa permutación?

Por ejemplo n = 3 :

 a = [1,2,3] 

Hay 3 ^ 3 = 27 posibles barajadas

No. ocurrencia de diferentes permutaciones:

     1 2 3 = 4 3 1 2 = 4 3 2 1 = 4 1 3 2 = 5 2 1 3 = 5 2 3 1 = 5 

    PD: No soy tan bueno con las matemáticas.

    Esto no es una prueba de ninguna manera, pero puede llegar rápidamente a la distribución de las probabilidades de colocación ejecutando el algoritmo sesgado un millón de veces. Se verá como esta imagen de wikipedia:

    permutar con todos los sesgos de orden

    Una distribución imparcial tendría un 14,3% en todos los campos.

    Para obtener la distribución más probable, creo que es seguro elegir el porcentaje más alto para cada índice. Esto significa que es muy probable que toda la matriz se mueva hacia abajo en uno y el primer elemento se convertirá en el último.

    Edit: corrí algunas simulaciones y este resultado es muy probable que esté mal. Dejaré esta respuesta hasta que pueda encontrar algo mejor.