Python 生成一定范围内不重复随机数
随机数 Python set
文章目录
- Python 生成一定范围内不重复随机数
- 生成一定范围内随机数
- 两种方法:
- 一、利用set()特性去重
- set为何是天生去重的?
- 二、调用random.sample()
- 总结
生成一定范围内随机数
两种方法:
一、利用set()特性去重
import random
def getNumList(start, end, n):
"""生成n个 [ start, end ] 区间内的不重复随机数""" # 函数注释
numsArray = set()
while len(numsArray) < n:
numsArray.add(random.randint(start, end))
return list(numsArray)
set为何是天生去重的?
因为每存一个值到set里时, 都要先经过hash,然后通过得出的这个hash值算出应该存在set里的哪个位置,存的时候会先检查那个位置上有没有值 ,有的话就对比是否相等,如果相等,则不再存储此值。 如果不相等(即为空),则把新值 存在这。
二、调用random.sample()
import random
def getnums(start, end, n):
"""生成n个 [ start, end ] 区间内的不重复随机数""" # 函数注释
return random.sample([i for i in range(start, end+1)], n)
总结
区间长度过大时建议使用第一种方法,因为第二种方法会占用较多内存。而且第一种方法效率不比第二种差。