Python3.x伪随机,元素重排,矩阵
##非控制随机种子列表随机洗牌
特点:
- 随机的产生一个随机数
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伪随机,元素重排,矩阵相关推荐
- 众妙之门玄之又玄,游戏系统中的伪随机(Pseudo-Randomization)和真随机(True-Randomization)算法实现Python3
原文转载自「刘悦的技术博客」https://v3u.cn/a_id_212 有人说,如果一个人相信运气,那么他一定参透了人生.想象一下,如果你在某款moba游戏中,在装备平平,队友天坑的情况下,却刀刀 ...
- Java黑皮书课后题第8章:**8.14(探讨矩阵)编写程序,提示用户输入一个方阵的长度,随机地在矩阵中填入0和1,打印这个矩阵,然后找出整行、整列或者对角线都是1或0的行、列和对角线
**8.14(探讨矩阵)编写程序,提示用户输入一个方阵的长度,随机地在矩阵中填入0和1,打印这个矩阵,然后找出整行.整列或者对角线都是1或0的行.列和对角线 题目 题目描述与运行示例 破题 代码 题目 ...
- [CSS揭秘]伪随机背景
大自然中的事物都不是以无限平铺的方式存在的,如果想让事物营造一种自然随机性,那么就需要使用一种伪随机的技巧. 当你注意到一个有辨识度的特征在以固定的规律循环重复时,那么它视图营造的自然随机性就会立刻崩 ...
- 数据结构第5章例题 若矩阵Am×n中存在某个元素aij满足:aij是第i行中的最小值且是第j列中的最大值,则称该元素为矩阵A的一个鞍点。试编写一个算法,找出A中的所有鞍点。
[例5.1] 若矩阵Am×n中存在某个元素aij满足:aij是第i行中的最小值且是第j列中的最大值,则称该元素为矩阵A的一个鞍点.试编写一个算法,找出A中的所有鞍点. 算法如下: void saddl ...
- blkdiag--生成以输入元素为对角线元素的矩阵
[功能简介]生成以输入元素为对角线元素的矩阵. [语法格式] out=blkdiag(a,b,c,d-) 生成以a,b,c,d,-为对角线元素的矩阵. [实例3.18]生成以1.5.2.5.3.5为对 ...
- 【转】 DOTA2中的伪随机及其lua实现
[转] DOTA2中的伪随机及其lua实现 因为单纯的随机确实会影响到竞技性,所以dota2引入的是伪随机机制,在大量的技能中,比如说混沌的混乱之箭.剑圣的剑舞.冰女的冰霜领域之类的技能,都利用了伪随 ...
- Matlab生成各种伪随机信号_idinput指令
1.为何不是冲激信号? 只要是在信号系统这条道上混过的童鞋都知道,冲激信号是测试系统的最理想信号.因为时域的卷积相当于频域的乘积,而冲击信号的频域拥有最广泛的频谱,可以"暴露"系统 ...
- 伪随机交织抑制突发噪声的MATLAB仿真(采用(2,1,3)卷积码)
在上一篇文章中 BPSK调制下(2,1,3).(2,1,6)卷积码与QC-LDPC码译码性能和抑制突发噪声性能对比(MATLAB实现) 伪随机交织抑制突发噪声的仿真曲线不是很明显,虽然之前的程序没问题 ...
- 一种伪随机交织器的生成方法
欢迎同步关注公众号[逆向通信猿] 线性同余交织+m序列寄存器状态→伪随机交织 线性同余交织 A n + 1 ≡ a A n + c m
最新文章
- 爬虫--用python中requests和urllib模块爬取图片
- EasyUI中layout布局的简单使用
- 送给程序员终身受用的建议
- 网盘大战-各网盘使用测试
- Oracle系统查询的语句
- SketchUp草图大师制作分析图的详细流程介绍
- Linux C语言编程学习材料
- 蓝桥杯 种花小游戏 java 状压
- 关于breadcrumb面包屑
- 利用OneDNS同步chrome数据
- 零基础学java(6)——面向对象的基本特征
- 武大郎后悔爱上潘金莲爱上了三剑客
- java导出excel包含图片
- 计算净现值和内部报酬率的方法
- Netgear WNDR3800 用 LAN口 替换 WAN口
- supper和this关键字的区别
- ziheng - 测手速游戏
- t30服务器u盘如何安装系统,无光驱使用U盘/Ukey/闪存/启动电脑安装winxp sp3的操作系统--梦飞翔的地方(梦翔天空)...
- 云服务器ECS,你真的懂吗?
- PHP常用的建站系统
热门文章
- 程序员面试必备:动图演示十大经典排序算法及代码实现
- #033 信安培训基础题Python解决网络安全实验室|网络信息安全攻防学习平台
- webpack——快速入门【一】
- LVDS之一_理解SerDes
- mysql一个表中多个字段对应另一个表的id如何查询?
- return语句的用法
- IOS端与Java端MD5加密方法
- 表视图(UITableView)与表视图控制器(UITableViewController)
- 【PyQt】分析承载界面
- cocoapods 安装失败 ERROR: Error installing cocoapods: ERROR: Failed to build gem native extension.