这个问题给出了所有必要的数据:在给定的时间间隔 [0,N-1] 内生成 K个 非重复整数序列的有效算法是什么?如果 K 很大并且足够接近 N, 那么琐碎的算法(生成随机数,然后将它们添加到序列中之前,先查找它们是否已经存在)是非常昂贵的。 __
[从链接列表中有效地选择一组随机元素提供的算法似乎比所需的更为复杂,并且需要一些实现。只要您知道所有相关参数,我就找到了另一种似乎可以很好完成工作的算法。
Python库中的random模块使它极其简单和有效:
from random import sample print sample(xrange(N), K)
sample函数返回从给定序列中选择的K个唯一元素的列表。 xrange是一个“列表仿真器”,即它的行为就像一个连续数字的列表,而没有在内存中创建它,这使得它在执行此类任务时非常快。
sample
xrange