##非控制随机种子列表随机洗牌
特点:
- 随机的产生一个随机数
p
,当做列表lis
的索引位置,随机数产生范围为列表长度范围(len(lis))
内 - 取出当前索引
p
位置的元素,依次向后放置于新列表new_lis
中,之后删除掉原列表中对应位置元素 - 循环,直至全部取出、
此种洗牌方式,是最为直观的洗牌方式,随机的从原列表中抽出一张牌,生成一个新的排列
import random
def glyz_shuffle(lis):
new_lis = []
while lis:
p = random.randrange(0, len(lis))
new_lis.append(lis[p])
lis.pop(p)
return new_lis
lis = glyz_shuffle([1,2,3,4,5,4,3,2,1])
print(lis)
可以使用pop()
方法来对列表中的元素进行删除,也可以使用全局函数del
来删除指定位置
没有添加随机种子的随机排序,将会存在不可控排序,即每次执行的结果都是随机的。
再次执行程序,重排结果将不同:
##使