Barajar una secuencia de números siempre ha sido una utilidad útil, no es más que reorganizar los elementos en una array. 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: En este método usamos el método shuffle() de la biblioteca numpy .
Python3
# Import required module import numpy as np # Assign array arr = np.array([1, 2, 3, 4, 5, 6]) # Display original array print("Original array: ", arr) # Shuffle array np.random.shuffle(arr) # Display shuffled array print("Shuffled array: ", arr)
Producción
Original array: [1 2 3 4 5 6] Shuffled array: [4 1 5 3 2 6]
Método 2: En este método usaremos el método shuffle() de la biblioteca Random para mezclar la array dada.
Python3
# Import required module import random import array # Assign array arr = np.array([1, 2, 3, 4, 5, 6]) # Display original array print("Original array: ", arr) # Shuffle array random.shuffle(arr) # Display shuffled array print("Shuffled array: ", arr)
Producción:
Original array: [1 2 3 4 5 6] Shuffled array: [4 5 2 6 1 3]
Método 3: En este método usaremos el método sample() de la biblioteca aleatoria para mezclar la array dada.
Python3
# Import required module import random import array # Assign array # here q indicates that the array # contains signed integer arr = array.array('q', [1, 2, 3, 4, 5, 6]) # Display original array print("Original array: ", arr) # Shuffle array # Here sample() returns a list, so we # are typecasting list into array arr = array.array('q', random.sample(list(arr), 6)) # Display shuffled array print("Shuffled array: ", arr)
Producción:
Original array: array('q', [1, 2, 3, 4, 5, 6]) Shuffled array: array('q', [6, 3, 2, 1, 5, 4])
Método 4: en este método, seleccionaremos 2 índices al azar y luego los intercambiaremos. Este proceso se repetirá aleatoriamente hasta n/2 an veces, donde n es la longitud de la array.
Python3
# Import required module import random import array # Create class to shuffle array class Shuffler(object): # Constructor def __init__(self, arr): # Initializes the temp_array self.temp_array = arr # All the indices are stored in indices list self.indices = [index for index in range(len(arr))] # method to shuffle array def shuffle(self): # if length of array is zero empty array is returned. if not len(self.temp_array): return [] # The below swapping process is repeated randomly in range of # half of length of array to length of the array, in this case, # it is repeated randomly in between 3 to 6 times. for i in range(random.randint(int(len(self.temp_array)/2), len(self.temp_array))): # randomly choses two indices that is i, j from indices list i = random.choice(self.indices) j = random.choice(self.indices) # swapping the elements present at i,j indices. self.temp_array[i], self.temp_array[j] = self.temp_array[j], self.temp_array[i] return self.temp_array # Driver code # Assign array arr = array.array('q', [1, 2, 3, 4, 5, 6]) # Create Object of Shuffler class ob = Shuffler(arr) # Display original array print("Original array: ", arr) # Shuffle method is called print("Shuffled array: ", ob.shuffle())
Producción:
Original array: array('q', [1, 2, 3, 4, 5, 6]) Shuffled array: array('q', [1, 6, 3, 2, 4, 5])
Método 5: Este es uno de los métodos más eficientes, es el Algoritmo aleatorio de Fisher-Yates . El siguiente programa lo ayudará a comprender este algoritmo.
Python3
# Import required module import random import numpy as np # A function to generate a random # permutation of array def shuffler (arr, n): # We will Start from the last element # and swap one by one. for i in range(n-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 arr[i],arr[j] = arr[j],arr[i] return arr # Driver code # Assign array arr = np.array([1, 2, 3, 4, 5, 6]) # Display original array print("Original array: ",arr) # Get length of array n = len(arr) # Use shuffler() function to get shuffled array print("Shuffled array: ",shuffler(arr, n))
Producción:
Original array: [1 2 3 4 5 6] Shuffled array: [6 1 2 3 4 5]
Método 6:
En este método, seleccionaremos aleatoriamente un índice y lo agregaremos al final de la array. esto se repetirá durante n tiempo donde n es la longitud de la array.
Python3
import random arr=[1,2,3,4,5,6] n=len(arr)-1 for i in range(n): random_index = random.randint(0, n) temp = arr.pop(random_index) arr.append(temp) print(arr)
[2, 3, 6, 1, 5, 4]
Publicación traducida automáticamente
Artículo escrito por pulamolusaimohan y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA