我需要从所有可能的数字元组
如果我需要从一个数字序列而不是数字元组中获取样本,则
当然,我可以显式地构建包含所有可能的(
我不确定在Python 2和3中的效率是否相同;我使用的是Python 3。
range(n)
中随机无重复地取出一个样本。也就是说,我有一个包含(0,0), (0,1), ..., (0,n), (1,0), (1,1), ..., (1,n), ..., (n,0), (n,1), (n,n)的集合,并且我想要获取其中k个元素的样本。我希望避免显式地构建此集合。如果我需要从一个数字序列而不是数字元组中获取样本,则
random.sample(range(n), k)
是简单且高效的方法。当然,我可以显式地构建包含所有可能的(
n * n = n^2
)元组的列表,然后调用random.sample
。但是,如果k
远小于n^2
,那可能不是很高效。我不确定在Python 2和3中的效率是否相同;我使用的是Python 3。
random.sample(range(n), k)
)适用于所有序列、元组、列表、字符串和collections.Sequence
的任何子类,而且是正确的。你试过你的代码了吗?有什么问题吗? - S.Lott