从列表中随机选择50个项目

我有一个从文件中读取项目列表的函数。如何从列表中随机选择50个项目来写入另一个文件?

def randomizer(input, output='random.txt'):
query = open(input).read().split()
out_file = open(output, 'w')
    

random.shuffle(query)
    

for item in query:
out_file.write(item + '\n')

例如,如果总随机化文件是

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

我想要一个3的随机集合,结果可能是

random = ['9', '2', '3']

如何从随机选择的列表中选择50个?

更妙的是,我如何从原始列表中随机选择50个?

186207 次浏览

如果这个列表是随机排列的,你可以选择前50个。

否则,使用

import random
random.sample(the_list, 50)

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)

我认为 random.choice()是一个更好的选择。

import numpy as np


mylist = [13,23,14,52,6,23]


np.random.choice(mylist, 3, replace=False)

该函数返回一个由3个随机选择的值组成的数组

一个简单的方法来选择随机项目是洗牌,然后切片。

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

假设你的列表有100个元素,你想随机选择其中的50个。下面是要遵循的步骤:

  1. 导入库
  2. 创建随机数生成器的种子,我把它放在2
  3. 准备一个数字列表,从中随机挑选
  4. 从数字列表中随机选择

密码:

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)
  1. 我们有3个样品(‘橙色’,‘芒果’,‘苹果’)。创建的系列,应该包含7个元素和随机从列表中选择。

    随机选择
    import random
    
    
    import numpy as np
    
    
    fruits = ['orange','mango','apple']
    
    
    np.random.choice(fruits, 7, replace=True)
    

    输出

    array(['orange', 'mango', 'apple', 'orange', 'orange', 'mango', 'apple'],
    dtype='<U6')
    
  2. 从列表中随机选择(小于3个值)

    随机抽样
    import random
    
    
    random.sample(fruits, 3)