Mezclar una secuencia de números siempre ha sido una utilidad útil y la pregunta que ha aparecido en muchas entrevistas de colocación en empresas también. Conocer más de un método para conseguirlo siempre puede ser un plus. Analicemos ciertas formas en que esto se puede lograr.
Método #1: Algoritmo de barajar de Fisher-Yates
Este es uno de los famosos algoritmos que se emplea principalmente para barajar una secuencia de números en python. Este algoritmo solo toma el valor de índice más alto y lo intercambia con el valor actual, este proceso se repite en un bucle hasta el final de la lista.
Python3
# Python3 code to demonstrate # shuffle a list # using Fisher–Yates shuffle Algorithm import random # initializing list test_list = [1, 4, 5, 6, 3] # Printing original list print ("The original list is : " + str(test_list)) # using Fisher–Yates shuffle Algorithm # to shuffle a list for i in range(len(test_list)-1, 0, -1): # Pick a random index from 0 to i j = random.randint(0, i + 1) # Swap arr[i] with the element at random index test_list[i], test_list[j] = test_list[j], test_list[i] # Printing shuffled list print ("The shuffled list is : " + str(test_list))
The original list is : [1, 4, 5, 6, 3] The shuffled list is : [4, 3, 1, 5, 6]
Método #2: Uso de random.shuffle()
Este es el método más recomendado para barajar una lista. Python en su biblioteca aleatoria proporciona esta función incorporada que baraja la lista en el lugar. El inconveniente de esto es que el orden de la lista se pierde en este proceso. Útil para los desarrolladores que eligen ahorrar tiempo y ajetreo.
Python3
# Python3 code to demonstrate # shuffle a list # using random.shuffle() import random # initializing list test_list = [1, 4, 5, 6, 3] # Printing original list print ("The original list is : " + str(test_list)) # using random.shuffle() # to shuffle a list random.shuffle(test_list) # Printing shuffled list print ("The shuffled list is : " + str(test_list))
The original list is : [1, 4, 5, 6, 3] The shuffled list is : [5, 6, 4, 3, 1]
Método #3: Uso de random.sample()
Esta es una función bastante útil, mejor que el método de reproducción aleatoria utilizado anteriormente en el aspecto de que crea una nueva lista aleatoria y la devuelve en lugar de alterar el orden de la lista original. Esto es útil en los casos en que requerimos conservar la lista original.
Python3
# Python3 code to demonstrate # shuffle a list # using random.sample() import random # initializing list test_list = [1, 4, 5, 6, 3] # Printing original list print ("The original list is : " + str(test_list)) # using random.sample() # to shuffle a list res = random.sample(test_list, len(test_list)) # Printing shuffled list print ("The shuffled list is : " + str(res))
The original list is : [1, 4, 5, 6, 3] The shuffled list is : [5, 3, 6, 1, 4]
Método 4:
En este método, seleccionamos un índice al azar y agregamos ese elemento en ese índice a la lista.
Python3
import random # Assign array arr = [1, 2, 3, 4, 5, 6] # Display original array print("Original List: ", arr) # Get length of List n = len(arr) #repeat the following for n number of times for i in range(n): #select an index randomly j = random.randint(0, n-1) #delete the element at that index. element=arr.pop(j) #now append that deleted element to the list arr.append(element) print("Shuffled List: ",arr)
Original List: [1, 2, 3, 4, 5, 6] Shuffled List: [4, 5, 3, 2, 6, 1]
Publicación traducida automáticamente
Artículo escrito por manjeet_04 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA