2015-09-29 5 views
3

Этот вопрос может быть обобщен на случайное создание списка размера n, содержащего предварительно заданные целые числа (при условии равномерного распределения). Надеемся, что она будет выглядеть следующим образом:Как сгенерировать список случайных целых чисел, но только с использованием указанных целых чисел? (Python)

Возможно, синтаксис будет выглядеть как

randList([list of integers], size) 

, которые могли бы производить что-то вдоль линий:

randList([1,-1], 7) 
>>> [1,-1,1,-1,-1,-1,1] #(random) 

или

randList([2,3,4], 10) 
>>> [4,3,4,2,2,4,2,3,4,3] #(random) 

Я немного новичок в python, и везде, где я смотрю, он всегда возвращает диапазон v между низким и высоким, а не конкретными значениями. Спасибо

+5

Похоже, вам нужен «random.choice». –

+0

Затем выполняйте цикл и добавляйте каждый раз? –

+3

Понимание списка будет более идиоматичным, чем цикл for - '[random.choice (seq) для _ в диапазоне (10)]' или что-то, где 'seq' - ваш список значений кандидата. –

ответ

1

Вы хотите использовать random.choice, см. this SO answer для обсуждения.

Однако, даже если вы могли бы сделать только значения в диапазоне:

Я немного новичок в Python и везде я смотрю это всегда возвращается диапазон значений между низким и высоким

... Вы все равно можете делать то, что хотите здесь, просто предположите, что нижний/верхний пределы равны 0 -> размеру вашего списка, а затем с каждым случайным int, сгенерированным в этом диапазоне, возьмите номер при этом индекс.

2

Полный рабочий пример. Все, что вам нужно сделать, это заменить значение choices со списком номеров вы хотите, чтобы выбрать из и заменить range(10) с range(number_of_items_i_want)

import random 
choices = list(range(10)) 
random_sample = [random.choice(choices) for _ in range(10)] 

Если вы хотите, чтобы это как функция, так что вы можете использовать его, это было бы простой способ сделать это:

import random 
def random_list(choices, size): 
    return [random.choice(choices) for _ in range(size)] 
Смежные вопросы