2014-01-18 66 views
0

如何使用random.randint()来选择在python列表中给出的随机名称。随机从列表中使用random.randint选择python

我想从列表中打印5个名称。其实我知道如何使用random.randint()的数字。但我不知道如何从给定列表中选择随机名称。

我们不允许使用random.choice

帮我请

回答

1
>>> population = range(10) 

你允许使用random.sample

>>> names = random.sample(population, 5) 
>>> names 
[4, 0, 1, 2, 8] 

仅仅使用random.randint会比较困难,但如果你必须这样做,我会做这样的事情:

>>> names = [population[random.randint(0, len(population)-1)] for x in range(5)] 
>>> names 
[2, 8, 6, 6, 9] 

但很明显,这是与更换。如果你不想更换,你需要一些更复杂的代码。例如,函数:

def custom_sample(population, count): 
    names = [] 
    already_used = [] 
    for x in range(count): 
     temp_index = random.randint(0, len(population)-1) 
     while temp_index in already_used: 
      temp_index = random.randint(0, len(population)-1) 
     names.append(population[temp_index]) 
     already_used.append(temp_index) 
    return names 

所以:

>>> names = custom_sample(population, 5) 
>>> names 
[7, 4, 8, 3, 0] 
0
list = [...] 
size = len(list) 
randomName = list[random.randint()%size] 
1

这并不能保证没有重复,因为random.choice是更好。

import random 
names = ["A", "B", "C", "D", "E", "F", "G", "H", "I"] 
print([names[random.randint(0, len(names)-1)] for i in range(5)]) 
0

是,从一个群体重复取样,@ MaxLascombe的答案是确定。如果你不想在样本中使用瓷砖,你应该踢出选定的瓷砖。然后在列表的其余部分使用@ MaxLascombe的答案。