2014-01-18 5 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] 
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 в остальной части списка.

Смежные вопросы