列表随机选择实现

从一个有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)
原文地址:https://www.cnblogs.com/letusrock/p/4318023.html