我需要从列表中挑选出"x“个不重复的随机数。例如:
all_data = [1, 2, 2, 3, 4, 5, 6, 7, 8, 8, 9, 10, 11, 11, 12, 13, 14, 15, 15]
如何选择像[2, 11, 15]
而不是[3, 8, 8]
这样的列表
发布于 2011-06-27 22:35:17
如下所示:
all_data = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]
from random import shuffle
shuffle(all_data)
res = all_data[:3]# or any other number of items
或者:
from random import sample
number_of_items = 4
sample(all_data, number_of_items)
如果all_data可能包含重复条目,请先修改代码以删除重复条目,然后使用shuffle或sample:
all_data = list(set(all_data))
shuffle(all_data)
res = all_data[:3]# or any other number of items
发布于 2011-06-28 02:08:36
另一种方式,当然,对于所有的解决方案,您必须确保原始列表中至少有3个唯一值。
all_data = [1,2,2,3,4,5,6,7,8,8,9,10,11,11,12,13,14,15,15]
choices = []
while len(choices) < 3:
selection = random.choice(all_data)
if selection not in choices:
choices.append(selection)
print choices
发布于 2011-06-28 04:37:56
您还可以使用itertools.combinations
和random.shuffle
生成随机选择列表。
all_data = [1,2,2,3,4,5,6,7,8,8,9,10,11,11,12,13,14,15,15]
# Remove duplicates
unique_data = set(all_data)
# Generate a list of combinations of three elements
list_of_three = list(itertools.combinations(unique_data, 3))
# Shuffle the list of combinations of three elements
random.shuffle(list_of_three)
输出:
[(2, 5, 15), (11, 13, 15), (3, 10, 15), (1, 6, 9), (1, 7, 8), ...]
https://stackoverflow.com/questions/6494508
复制相似问题