##非控制随机种子列表随机洗牌
特点:

  • 随机的产生一个随机数p,当做列表lis的索引位置,随机数产生范围为列表长度范围(len(lis))
  • 取出当前索引p位置的元素,依次向后放置于新列表new_lis中,之后删除掉原列表中对应位置元素
  • 循环,直至全部取出、

此种洗牌方式,是最为直观的洗牌方式,随机的从原列表中抽出一张牌,生成一个新的排列

import randomdef 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来删除指定位置
没有添加随机种子的随机排序,将会存在不可控排序,即每次执行的结果都是随机的。
再次执行程序,重排结果将不同:

##使用随机种子控制伪随机列表洗牌

import randomdef glyz_shuffle(lis):new_lis = []randseed = 3random.seed(randseed)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)

每次执行的重排结果将相同。
如果想增加洗牌的随机性,可将每一次得到的最后一个随机数当做下次洗牌的随机种子。

def glyz_shuffle(lis,randseed):new_lis = []return_p = 0return_all = []random.seed(randseed)while lis:p = random.randrange(0, len(lis))new_lis.append(lis[p])lis.pop(p)return_p = preturn_all.append(new_lis)return_all.append(return_p)return return_allrandseed = 3
for i in range(2):lis = glyz_shuffle([1,2,3,4,5,4,3,2,1],randseed)randseed = lis[1]print(lis)

Python3.x伪随机,元素重排,矩阵相关推荐

  1. 众妙之门玄之又玄,游戏系统中的伪随机(Pseudo-Randomization)和真随机(True-Randomization)算法实现Python3

    原文转载自「刘悦的技术博客」https://v3u.cn/a_id_212 有人说,如果一个人相信运气,那么他一定参透了人生.想象一下,如果你在某款moba游戏中,在装备平平,队友天坑的情况下,却刀刀 ...

  2. Java黑皮书课后题第8章:**8.14(探讨矩阵)编写程序,提示用户输入一个方阵的长度,随机地在矩阵中填入0和1,打印这个矩阵,然后找出整行、整列或者对角线都是1或0的行、列和对角线

    **8.14(探讨矩阵)编写程序,提示用户输入一个方阵的长度,随机地在矩阵中填入0和1,打印这个矩阵,然后找出整行.整列或者对角线都是1或0的行.列和对角线 题目 题目描述与运行示例 破题 代码 题目 ...

  3. [CSS揭秘]伪随机背景

    大自然中的事物都不是以无限平铺的方式存在的,如果想让事物营造一种自然随机性,那么就需要使用一种伪随机的技巧. 当你注意到一个有辨识度的特征在以固定的规律循环重复时,那么它视图营造的自然随机性就会立刻崩 ...

  4. 数据结构第5章例题 若矩阵Am×n中存在某个元素aij满足:aij是第i行中的最小值且是第j列中的最大值,则称该元素为矩阵A的一个鞍点。试编写一个算法,找出A中的所有鞍点。

    [例5.1] 若矩阵Am×n中存在某个元素aij满足:aij是第i行中的最小值且是第j列中的最大值,则称该元素为矩阵A的一个鞍点.试编写一个算法,找出A中的所有鞍点. 算法如下: void saddl ...

  5. blkdiag--生成以输入元素为对角线元素的矩阵

    [功能简介]生成以输入元素为对角线元素的矩阵. [语法格式] out=blkdiag(a,b,c,d-) 生成以a,b,c,d,-为对角线元素的矩阵. [实例3.18]生成以1.5.2.5.3.5为对 ...

  6. 【转】 DOTA2中的伪随机及其lua实现

    [转] DOTA2中的伪随机及其lua实现 因为单纯的随机确实会影响到竞技性,所以dota2引入的是伪随机机制,在大量的技能中,比如说混沌的混乱之箭.剑圣的剑舞.冰女的冰霜领域之类的技能,都利用了伪随 ...

  7. Matlab生成各种伪随机信号_idinput指令

    1.为何不是冲激信号? 只要是在信号系统这条道上混过的童鞋都知道,冲激信号是测试系统的最理想信号.因为时域的卷积相当于频域的乘积,而冲击信号的频域拥有最广泛的频谱,可以"暴露"系统 ...

  8. 伪随机交织抑制突发噪声的MATLAB仿真(采用(2,1,3)卷积码)

    在上一篇文章中 BPSK调制下(2,1,3).(2,1,6)卷积码与QC-LDPC码译码性能和抑制突发噪声性能对比(MATLAB实现) 伪随机交织抑制突发噪声的仿真曲线不是很明显,虽然之前的程序没问题 ...

  9. 一种伪随机交织器的生成方法

    欢迎同步关注公众号[逆向通信猿] 线性同余交织+m序列寄存器状态→伪随机交织 线性同余交织 A n + 1 ≡ a A n + c   m

最新文章

  1. 爬虫--用python中requests和urllib模块爬取图片
  2. EasyUI中layout布局的简单使用
  3. 送给程序员终身受用的建议
  4. 网盘大战-各网盘使用测试
  5. Oracle系统查询的语句
  6. SketchUp草图大师制作分析图的详细流程介绍
  7. Linux C语言编程学习材料
  8. 蓝桥杯 种花小游戏 java 状压
  9. 关于breadcrumb面包屑
  10. 利用OneDNS同步chrome数据
  11. 零基础学java(6)——面向对象的基本特征
  12. 武大郎后悔爱上潘金莲爱上了三剑客
  13. java导出excel包含图片
  14. 计算净现值和内部报酬率的方法
  15. Netgear WNDR3800 用 LAN口 替换 WAN口
  16. supper和this关键字的区别
  17. ziheng - 测手速游戏
  18. t30服务器u盘如何安装系统,无光驱使用U盘/Ukey/闪存/启动电脑安装winxp sp3的操作系统--梦飞翔的地方(梦翔天空)...
  19. 云服务器ECS,你真的懂吗?
  20. PHP常用的建站系统

热门文章

  1. 程序员面试必备:动图演示十大经典排序算法及代码实现
  2. #033 信安培训基础题Python解决网络安全实验室|网络信息安全攻防学习平台
  3. webpack——快速入门【一】
  4. LVDS之一_理解SerDes
  5. mysql一个表中多个字段对应另一个表的id如何查询?
  6. return语句的用法
  7. IOS端与Java端MD5加密方法
  8. 表视图(UITableView)与表视图控制器(UITableViewController)
  9. 【PyQt】分析承载界面
  10. cocoapods 安装失败 ERROR: Error installing cocoapods: ERROR: Failed to build gem native extension.