Как использовать random.choice() для выполнения множественного случайного выбора?

Я хочу использовать random.choice(), чтобы выбрать 5 значений из первого столбца в csv в качестве пропускной способности. После запуска программы получается 5 одинаковых значений. Что не так с моей программой?

Я пробовал random.sample(), но он не работает с ошибкой 'в образце поднять ValueError("Выборка больше, чем совокупность или отрицательна") '. Поэтому я просто хочу использовать random.choice(), он не сообщил об ошибке, но извлек 5 повторяющихся значений.

with open('/home/wifi.csv', 'r') as fp:
    reader = csv.reader(fp)
    data = [row for row in reader]
    random.choice(data)

 #choose 5 value from first column as bandwidth
    bw = random.choice(data)[0]*5 
    print(bw)

Я ожидаю, что результат будет «4,5 3,7 2,6 1,8 3,1». но фактический результат «4,5 4,5 4,5 4,5 4,5»

Связано: stackoverflow.com/questions/240178/…

Peter O. 16.05.2019 17:22
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
1
227
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Умножение списка на целое число N дублирует этот список N раз, что вы видели:

In [4]: [1] * 5
Out[4]: [1, 1, 1, 1, 1]

Вместо этого вы хотите сделать random.choice несколько раз. Вы можете сделать это в цикле или в чем-то вроде понимания списка, как показано ниже:

In [5]: x = list(range(10))

In [6]: [random.choice(x) for _ in range(10)]
Out[6]: [2, 1, 5, 7, 5, 5, 7, 3, 2, 5]

Что вы сделали, так это выбрали один вариант и умножили его на 5.

['choice']*5

обозначает

['choice', 'choice', 'choice', 'choice', 'choice']

То, что вы на самом деле хотите сделать, это вызвать random.choice() 5 раз и добавить результат в список:

for _ in range(5): results.append(random.choice(dataset))

Что можно упростить с помощью понимания списка:

[random.choice(dataset) for _ in range(5)]

Другие вопросы по теме