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

时间:2019-05-16 15:14:35

标签: python random

我想使用random.choice()从csv的第一列中选​​择5个值作为带宽。运行该程序后,结果是5个相同的值。我的程序怎么了?

我尝试过random.sample(),但它不适用于示例中的Error'  引发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'

2 个答案:

答案 0 :(得分:1)

将列表与整数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]

答案 1 :(得分:0)

您所做的是选择一个选项,然后乘以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)]