Até agora, descobri como importar o arquivo, criar novos arquivos e randomizar a lista.
Estou tendo problemas para selecionar aleatoriamente apenas 50 itens da lista para gravar em um arquivo?
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')
Portanto, se o arquivo de randomização total fosse
example:
random_total = ['9','2','3','1','5','6','8','7','0','4']
Eu gostaria de 3 arquivos (out_file1 | 2 | 3) com o primeiro conjunto aleatório de 3, o segundo conjunto aleatório de 3 e o terceiro conjunto aleatório de 3 (neste exemplo, mas o que eu quero criar deve ter 50)
random_1 = ['9','2','3']
random_2 = ['1','5','6']
random_3 = ['8','7','0']
Portanto, o último '4' não será incluído, o que é bom.
Como posso selecionar 50 da lista que selecionei aleatoriamente?
Ainda melhor, como eu poderia selecionar 50 aleatoriamente da lista original?
Respostas:
Se a lista estiver em ordem aleatória, você pode apenas pegar os 50 primeiros.
Caso contrário, use
random.sample
Texto de ajuda:fonte
random.sample
devolver também os índices que ele escolheu?Uma maneira fácil de selecionar itens aleatórios é embaralhar e fatiar.
fonte
random.choice(mylist,3)
não criaria dois conjuntos disjuntos como esse.Eu acho que
random.choice()
é uma opção melhor.a função retorna uma matriz de 3 valores escolhidos aleatoriamente da lista
fonte
random.choice(mylist, 3, replace=False)
. Também menos confuso de usarimport numpy as np
enp.random.choice(mylist, 3, replace=False)
Digamos que sua lista tenha 100 elementos e você queira escolher 50 deles de maneira aleatória. Aqui estão as etapas a seguir:
Código:
fonte