25. Fisher-Yates
Implementa el algoritmo de desordenamiento de Fisher-Yates (también conocido como Knuth Shuffle).
Crea una función que reciba una lista y la desordene aleatoriamente de manera uniforme. La función debe modificar la lista en su lugar (o devolver una nueva lista desordenada si prefieres, pero justifica tu elección).
import random
def fisher_yates_shuffle(lista: list) -> list:
# Tu código aquí
pass
# Ejemplo (el resultado será aleatorio)
lista_ejemplo = [1, 2, 3, 4, 5]
fisher_yates_shuffle(lista_ejemplo)
# Posible resultado: [3, 1, 5, 2, 4]
Ratoncito
Implementa el algoritmo Fisher-Yates. Asegúrate de que el desorden sea verdaderamente aleatorio y uniforme.
Dragón
Investiga cómo generar números aleatorios "verdaderos" o criptográficamente seguros en tu lenguaje de programación (si es relevante) y discute las implicaciones de usar un PRNG (generador de números pseudoaleatorios) para el desordenamiento. Considera si la implementación es destructiva (modifica la lista original) o no.
This work is under a Attribution-NonCommercial-NoDerivatives 4.0 International license.
Support me on Ko-fi