Python代码示例:
import random
def random_sampling(population, num_samples):
"""
随机抽样函数,不重复抽样
:param population: 可迭代对象,样本总体
:param num_samples: 抽样样本个数
:return: 抽样结果
"""
population = list(population)
sample = []
for i in range(num_samples):
# 对于剩余的样本,等概率随机抽取一个
idx = random.randint(0, len(population)-1)
sample.append(population.pop(idx))
return sample
说明:
在进行不重复抽样的优化问题中,我们可以先采用随机抽样的方法。对于样本总体中的每个样本,等概率地随机抽取一个,就可以得到较为均匀的抽样结果。
注:此示例代码中的算法时间复杂度为O(nk),其中n为总体样本大小,k为需要抽取的样本的个数,这个方法在样本总体较大时并不适用,可以采用更高效的算法来实现。