概述
生成指定范围内长度为n的数组.
参考 洗牌算法
世界上有哪些代码量很少,但很牛逼很经典的算法或项目案例? - 程序员吴师兄的回答 - 知乎
其实标准库random.shuffle也有实现.
Python
def get_random_list(start,stop,n):
'''
生成范围在[start,stop], 长度为n的数组.
区间包含左右endpoint
'''
arr = list(range(start, stop+1))
shuffle_n(arr,n)
return arr[-n:]
def shuffle_n(arr,n):
random.seed(time.time())
for i in range(len(arr)-1,len(arr)-n-1,-1):
print(i)
j = random.randint(0,i)
arr[i], arr[j] = arr[j], arr[i]
使用:
# 生成范围从0,100, 长度为10的数组
lst = get_random_list(0,100,10)
[37, 57, 96, 90, 8, 13, 85, 71, 28, 30]