如何获得python列表中具有不同值的元素的随机位置?
假设一个python列表,例如:如何获得python列表中具有不同值的元素的随机位置?,python,random,Python,Random,假设一个python列表,例如:l=[1,1,1,2,2,3,3,3,4,4](不一定对列表进行排序) 我想在列表中随机选择n不同元素的位置 例如,假设n=3,因此我想选择列表中三个不同元素的位置 一个解决方案是:位置0,4,8分别与三个不同的元素值1,2,4相关 在Python中,最有效的方法是什么?一种方法是对列表进行洗牌,并按顺序获取值 import random l = [1,1,1,2,2,3,3,3,4,4] random.shuffle(l) n = 3 arr = [] f
l=[1,1,1,2,2,3,3,3,4,4]
(不一定对列表进行排序)
我想在列表中随机选择n
不同元素的位置
例如,假设n=3
,因此我想选择列表中三个不同元素的位置
一个解决方案是:位置0,4,8分别与三个不同的元素值1,2,4相关
在Python中,最有效的方法是什么?一种方法是对列表进行洗牌,并按顺序获取值
import random
l = [1,1,1,2,2,3,3,3,4,4]
random.shuffle(l)
n = 3
arr = []
for i in range(n):
arr.append(i)
您想要从列表中随机索引吗?在一定范围内使用
sample
方法
import random
l = [1,1,1,2,2,3,3,3,4,4]
n = 3
random.sample(range(len(l)), n)
您可以创建
值:索引
字典,其中值
是列表l
中的唯一值,索引
是l
中值
的索引列表。然后,您可以从n
随机选择的唯一值的每个值的索引
列表中获取随机索引:
from collections import defaultdict
from random import sample, choice
index_map = defaultdict(list)
for i, v in enumerate(l):
index_map[v].append(i)
n = 3
# choose `n` random unique values from `l`
rand_values = sample(list(index_map), n)
# choose a random index of each of the `n` random values
rand_indices = [choice(index_map[v]) for v in rand_values]
print(rand_indices)
我想你可以先创建一个新的列表,每个值只包含一次,然后从中随机取值
试试看:
l = list(set([1,1,1,2,2,3,3,3,4,4]))
现在,您可以使用此处显示的方法,从列表中获取n个随机元素,您可以知道您将获得差异值您希望随机性如何分布?例如,如果您有[1,2,2,2,2,2,2,2]
,并且您选择了n=1
,那么所有索引的可能性是否相同,或者您是否希望一半时间的答案为0?请参阅。堆栈溢出不是为了替换现有的文档和教程。random
包的文档中介绍了各种随机选择方法。这如何保证索引对应不同的值?我需要选择索引而不是值。好的。然后忽略此应答。应根据其各自的值选择索引。应根据其各自的值选择索引。我需要选择索引而不是值。因此,在找到每个值的索引后,它开始变得复杂。相反,您可以使用一个简单的while循环来获取随机索引,并检查它们的值是否被选中,直到您获得足够的索引为止。如果你感兴趣的话,我可以给你这个密码。你的答案是准确的。我在考虑是否可以只生成3个随机数。在您的答案中,生成了6个随机数:3个随机数获得3个值(在“样本”函数中),3个随机数获得位置(3次调用“选择”函数)。