Python 如何使用random.choice()执行多项随机选择?
我想使用random.choice()从csv的第一列中选择5个值作为带宽。运行程序后,结果是5个相同的值。我的程序怎么了 我尝试了random.sample(),但它与sample中的“错误”不兼容 raise VALUERROR(“样本大于总体或为负”)。 所以我只想使用random.choice(),它没有报告错误,而是提取了5个重复值Python 如何使用random.choice()执行多项随机选择?,python,random,Python,Random,我想使用random.choice()从csv的第一列中选择5个值作为带宽。运行程序后,结果是5个相同的值。我的程序怎么了 我尝试了random.sample(),但它与sample中的“错误”不兼容 raise VALUERROR(“样本大于总体或为负”)。 所以我只想使用random.choice(),它没有报告错误,而是提取了5个重复值 with open('/home/wifi.csv', 'r') as fp: reader = csv.reader(fp) data
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.54.54.54.54.54.5”将一个列表乘以整数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)]
相关的: