从一个有n个元素的列表中,随机选取m个元素,时间复杂度为n:
1 #!/usr/bin/env python 2 3 import random 4 5 #获取一个随机列表 6 a = range(0, 10) 7 random.shuffle(a) 8 print a 9 10 def randPick(a, m): 11 n = len(a) 12 13 if m > n: 14 print "ERROR: m larger than n" 15 return 16 17 for i in range(0, n): 18 #选中第一个数的概率为:m/n 19 if random.randint(0, (n-1)-i) < m: 20 print "pick", a[i] 21 #选中一个元素后m值减一 22 m -= 1 23 24 randPick(a, 3)