Seleccione 50 elementos de la lista al azar para escribir en el archivo

Hasta ahora he descubierto cómo importar el archivo, crear nuevos archivos y aleatorizar la lista.

¿Tengo problemas para seleccionar solo 50 elementos de la lista al azar para escribir en un archivo?

def randomizer(input,output1='random_1.txt',output2='random_2.txt',output3='random_3.txt',output4='random_total.txt'): #Input file query=open(input,'r').read().split() dir,file=os.path.split(input) temp1 = os.path.join(dir,output1) temp2 = os.path.join(dir,output2) temp3 = os.path.join(dir,output3) temp4 = os.path.join(dir,output4) out_file4=open(temp4,'w') random.shuffle(query) for item in query: out_file4.write(item+'\n') 

Así que si el archivo de aleatorización total era

 example: random_total = ['9','2','3','1','5','6','8','7','0','4'] 

Quisiera 3 archivos (out_file1 | 2 | 3) con el primer conjunto aleatorio de 3, el segundo conjunto aleatorio de 3 y el tercer conjunto aleatorio de 3 (para este ejemplo, pero el que quiero crear debería tener 50)

 random_1 = ['9','2','3'] random_2 = ['1','5','6'] random_3 = ['8','7','0'] 

Así que el último ‘4’ no se incluirá, lo que está bien.

¿Cómo puedo seleccionar 50 de la lista que asigné al azar?

Aún mejor, ¿cómo podría seleccionar 50 al azar de la lista original?

Si la lista está en orden aleatorio, puede tomar los primeros 50.

De lo contrario, utilice

 import random random.sample(the_list, 50) 

texto de ayuda random.sample :

 sample(self, population, k) method of random.Random instance Chooses k unique random elements from a population sequence. Returns a new list containing elements from the population while leaving the original population unchanged. The resulting list is in selection order so that all sub-slices will also be valid random samples. This allows raffle winners (the sample) to be partitioned into grand prize and second place winners (the subslices). Members of the population need not be hashable or unique. If the population contains repeats, then each occurrence is a possible selection in the sample. To choose a sample in a range of integers, use xrange as an argument. This is especially fast and space efficient for sampling from a large population: sample(xrange(10000000), 60) 

Una forma fácil de seleccionar elementos aleatorios es mezclar y luego dividir.

 import random a = [1,2,3,4,5,6,7,8,9] random.shuffle(a) print a[:4] # prints 4 random variables 

Creo que random.choice() es una mejor opción.

 import numpy as np mylist = [13,23,14,52,6,23] np.random.choice(mylist, 3, replace=False) 

la función devuelve una matriz de 3 valores elegidos al azar de la lista

Digamos que su lista tiene 100 elementos y desea seleccionar 50 de ellos de forma aleatoria. Aquí están los pasos a seguir:

  1. Importar las bibliotecas
  2. Crear la semilla para el generador de números aleatorios, lo puse en 2
  3. Prepare una lista de números para recoger de forma aleatoria
  4. Haz las elecciones al azar de la lista de números

Código:

 from random import seed from random import choice seed(2) numbers = [i for i in range(100)] print(numbers) for _ in range(50): selection = choice(numbers) print(selection)