随机数是专门的随机试验的结果,那么为什么叫伪随机数呢?

之所以称之为伪随机数,是因为真正意义上的随机数(或者随机事件)在某次产生过程中是按照实验过程中表现的分布概率随机产生的,其结果是不可预测的,是不可见的。
而计算机中的随机函数是按照一定算法模拟产生的,其结果是确定的,是可见的。我们可以这样认为这个可预见的结果其出现的概率是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
>>>

随机数 == 伪随机数?相关推荐

  1. 随机数:真随机数和伪随机数

    说到随机这个词,相信各位肯定都深有体会了.生活中有太多的不确定因素从各方各面影响着我们,但也正是因为这样我们的人生更加多彩,具有了更多的可能性. 可以说,随机是个非常有魅力的东西. 你在生活中可能因为 ...

  2. python函数的唯一标识_python基础教程Python通用唯一标识符uuid模块使用案例

    1. 背景知识: UUID: 通用唯一标识符 ( Universally Unique Identifier ), 对于所有的UUID它可以保证在空间和时间上的唯一性. 它是通过MAC地址, 时间戳, ...

  3. Python概念:生成唯一性序号uuid

    1 uuid是什么 UUID: 通用唯一标识符 ( Universally Unique Identifier ), 对于所有的UUID它可以保证在空间和时间上的唯一性. 它是通过MAC地址, 时间戳 ...

  4. BlockChain:Py实现区块链简单场景应用:程序猿记录在区块里的收入记录图

    BlockChain:Py实现区块链简单场景应用:程序猿记录在区块里的收入记录图 导读 想更好的了解区块链技术?还是用程序猿的方式来加深了解和探索区块链吧!实际案例应用会让我们更加熟悉它的底层技术! ...

  5. Python uuid 介绍

    1. 背景知识: UUID: 通用唯一标识符 ( Universally Unique Identifier ), 对于所有的UUID它可以保证在空间和时间上的唯一性. 它是通过MAC地址, 时间戳, ...

  6. Python__random库基本介绍

    random库是使用随机数的Python标准库 从概率论角度来说,随机数是随机产生的数据(比如抛硬币),但时计算机是不可能产生随机值,真正的随机数也是在特定条件下产生的确定值,只不过这些条件我们没有理 ...

  7. Javaweb学习笔记——(三)——————JavaScript基础DOM基础

    day03 1.js的String对象 **创建String对象 ***var str = "abc"; **方法和属性(文档) ***属性 lenth:字符串的长度 ***方法 ...

  8. 受限玻尔兹曼机准备知识——蒙特卡洛方法

    先了解几个基本概率知识,不急着看蒙特卡洛方法的定义,具体的MC方法参考网上各种资料. 两个比较好的学习MC方法的文章:蒙特卡洛方法入门 (结合了实例)和 蒙特卡洛方法 (推荐,非常详细) 更新日志:2 ...

  9. 10个常用python标准库_【循序渐进学Python】11.常用标准库

    安装完Python之后,我们也同时获得了强大的Python标准库,通过使用这些标准库可以为我们节省大量的时间.这里是一些常用标准库的简单说明.更多的标准库的说明,可以参考Python文档 sys 模块 ...

最新文章

  1. 多项式模2运算及求逆元
  2. python注释的用法(单and多行)
  3. oracle 审计数据大,oracle审计AUD$过大导致的数据库登录异常
  4. C#实现软件授权,限定MAC运行(软件license管理,简单软件注册机制)
  5. 红皮书--SQL语句
  6. php伪类,CSS3新增伪类
  7. GIS_WGS84经纬度坐标系_Web墨卡托坐标系_相互转换代码
  8. JDK常见问题 环境变量配置
  9. label怎么换行 vb_VB中怎么换行 | 学步园
  10. 我精通Copula、CoVaR、GARCH、ARIMA、协整、VAR、DCC、BEKK、MES、SRISK、最优组合权重、模拟预测等模型
  11. 5G时代将给智能营销笔记本带来什么样的改变
  12. iOS IPA包路径,分析百度统计崩溃日志
  13. lpx寒假作业案例12
  14. linux下载ccle数据,TCGA数据库下载,挖掘,Xena Browser可视化
  15. 虚拟服务器机是什么,什么是国内双线虚拟主机
  16. asp.net paypal信用卡支付功能
  17. 关于在工作中遇到的问题及解决方案
  18. 紫光同创国产FPGA学习之Fabric Inserter
  19. linux中grep的用法
  20. Linux下升级jdk版本

热门文章

  1. Banana Pi BPI-R3 评测:详细信息、功能
  2. linux分区变为空闲,分析linux系统中磁盘空闲空间的管理方法
  3. 腾讯云服务器带宽按使用流量计费规则(通俗易懂)
  4. Sass-5【颜色函数、透明度函数、@规则】
  5. 如何快速搭建一个像“天猫精灵”的智能语音助手?
  6. android回收activity,Android系统回收activity行为
  7. 5款值得推荐的工具和软件,让你的工作效率翻倍
  8. 一部手机全搞定,抖音发工资了,一共2千多,方法人人可以用
  9. asp毕业设计—— 基于asp+access的论坛网站设计与实现(毕业论文+程序源码)——论坛网站
  10. 隐私黑产:2亿余条个人信息卖了2000余万元