随机取的n个数字可以重复
import random
[random.randint(0,m) for _ in range(n)]
这样取出来的数字是有可能重复的,并且允许 m<n 的情况
随机取的n个数字不可以重复
import random
def get_random_list_without_repetition(m, n):
results=[]
while(len(results) < n)
s = random.randint(0, m)
if s not in results:
results.append(s)
return results
这个的缺点是可能效率并不高,当m与n接近时,可能会消耗大量时间,一直找不到合适的s
两个小想法
- 可以尝试,每找到一个数,就将这个数从原list中删除,然后重新randint
- 当m接近n时,效率会极大的降低,可以加一个预判
if n < m/2:
get_random_list_without_repetition(m, n)
else:
get_random_list_without_repetition(m, m-n)
再求两个list的差集