随机数 == 伪随机数?
随机数是专门的随机试验的结果,那么为什么叫伪随机数呢?
之所以称之为伪随机数,是因为真正意义上的随机数(或者随机事件)在某次产生过程中是按照实验过程中表现的分布概率随机产生的,其结果是不可预测的,是不可见的。
而计算机中的随机函数是按照一定算法模拟产生的,其结果是确定的,是可见的。我们可以这样认为这个可预见的结果其出现的概率是100%。所以用计算机随机函数所产生的“随机数”并不随机,是伪随机数。计算机的伪随机数是由 随机种子 根据一定的计算方法计算出来的数值。所以,只要计算方法一定,随机种子一定,那么产生的随机数就是固定的。
那么怎么对伪随机数进行攻击呢,也就是怎么样再现之前的随机数呢?
以python为例
>>> x = random.getstate() //将随机数内部的状态赋值给x
>>> print(x)
(3, (1016028004, 1802878489, 812885751, 2907554112, 1792390388, 2786629648, 3270952119, 342996505, 2586295976, 509783117, 3462393140, 3197552260, 4130960772, 987064256,...... 1), None)
>>> random.randint(1,10) //随机生成1-10之间的随机数
3
>>> random.randint(1,10) //随机生成1-10之间的随机数
1
>>>
>>> random.randint(1,10) //随机生成1-10之间的随机数
9
>>> random.randint(1,10)
10
>>> random.randint(1,10)
9
>>> random.randint(1,10)
4
>>> random.setstate(x) //重新设置之前的随机数状态,即将之前的种子设置为当前的随机数状态值
>>> random.randint(1,10) //再次生成随机数发现与之前的随机数一致,说明随机数攻击成功,也再次印证了python的random模块生成的随机数是有规律特征的所谓的伪随机数
3
>>> random.randint(1,10)
1
>>> random.randint(1,10)
9
>>> random.randint(1,10)
10
>>> random.randint(1,10)
9
>>> random.randint(1,10)
4
>>>
随机数 == 伪随机数?相关推荐
- 随机数:真随机数和伪随机数
说到随机这个词,相信各位肯定都深有体会了.生活中有太多的不确定因素从各方各面影响着我们,但也正是因为这样我们的人生更加多彩,具有了更多的可能性. 可以说,随机是个非常有魅力的东西. 你在生活中可能因为 ...
- python函数的唯一标识_python基础教程Python通用唯一标识符uuid模块使用案例
1. 背景知识: UUID: 通用唯一标识符 ( Universally Unique Identifier ), 对于所有的UUID它可以保证在空间和时间上的唯一性. 它是通过MAC地址, 时间戳, ...
- Python概念:生成唯一性序号uuid
1 uuid是什么 UUID: 通用唯一标识符 ( Universally Unique Identifier ), 对于所有的UUID它可以保证在空间和时间上的唯一性. 它是通过MAC地址, 时间戳 ...
- BlockChain:Py实现区块链简单场景应用:程序猿记录在区块里的收入记录图
BlockChain:Py实现区块链简单场景应用:程序猿记录在区块里的收入记录图 导读 想更好的了解区块链技术?还是用程序猿的方式来加深了解和探索区块链吧!实际案例应用会让我们更加熟悉它的底层技术! ...
- Python uuid 介绍
1. 背景知识: UUID: 通用唯一标识符 ( Universally Unique Identifier ), 对于所有的UUID它可以保证在空间和时间上的唯一性. 它是通过MAC地址, 时间戳, ...
- Python__random库基本介绍
random库是使用随机数的Python标准库 从概率论角度来说,随机数是随机产生的数据(比如抛硬币),但时计算机是不可能产生随机值,真正的随机数也是在特定条件下产生的确定值,只不过这些条件我们没有理 ...
- Javaweb学习笔记——(三)——————JavaScript基础DOM基础
day03 1.js的String对象 **创建String对象 ***var str = "abc"; **方法和属性(文档) ***属性 lenth:字符串的长度 ***方法 ...
- 受限玻尔兹曼机准备知识——蒙特卡洛方法
先了解几个基本概率知识,不急着看蒙特卡洛方法的定义,具体的MC方法参考网上各种资料. 两个比较好的学习MC方法的文章:蒙特卡洛方法入门 (结合了实例)和 蒙特卡洛方法 (推荐,非常详细) 更新日志:2 ...
- 10个常用python标准库_【循序渐进学Python】11.常用标准库
安装完Python之后,我们也同时获得了强大的Python标准库,通过使用这些标准库可以为我们节省大量的时间.这里是一些常用标准库的简单说明.更多的标准库的说明,可以参考Python文档 sys 模块 ...
最新文章
- 多项式模2运算及求逆元
- python注释的用法(单and多行)
- oracle 审计数据大,oracle审计AUD$过大导致的数据库登录异常
- C#实现软件授权,限定MAC运行(软件license管理,简单软件注册机制)
- 红皮书--SQL语句
- php伪类,CSS3新增伪类
- GIS_WGS84经纬度坐标系_Web墨卡托坐标系_相互转换代码
- JDK常见问题 环境变量配置
- label怎么换行 vb_VB中怎么换行 | 学步园
- 我精通Copula、CoVaR、GARCH、ARIMA、协整、VAR、DCC、BEKK、MES、SRISK、最优组合权重、模拟预测等模型
- 5G时代将给智能营销笔记本带来什么样的改变
- iOS IPA包路径,分析百度统计崩溃日志
- lpx寒假作业案例12
- linux下载ccle数据,TCGA数据库下载,挖掘,Xena Browser可视化
- 虚拟服务器机是什么,什么是国内双线虚拟主机
- asp.net paypal信用卡支付功能
- 关于在工作中遇到的问题及解决方案
- 紫光同创国产FPGA学习之Fabric Inserter
- linux中grep的用法
- Linux下升级jdk版本
热门文章
- Banana Pi BPI-R3 评测:详细信息、功能
- linux分区变为空闲,分析linux系统中磁盘空闲空间的管理方法
- 腾讯云服务器带宽按使用流量计费规则(通俗易懂)
- Sass-5【颜色函数、透明度函数、@规则】
- 如何快速搭建一个像“天猫精灵”的智能语音助手?
- android回收activity,Android系统回收activity行为
- 5款值得推荐的工具和软件,让你的工作效率翻倍
- 一部手机全搞定,抖音发工资了,一共2千多,方法人人可以用
- asp毕业设计—— 基于asp+access的论坛网站设计与实现(毕业论文+程序源码)——论坛网站
- 隐私黑产:2亿余条个人信息卖了2000余万元