Python 如何使用random.choice()执行多项随机选择?

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

我想使用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 = [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)]
相关的: