伪随机数生成器顾名思义就是它能产生随机数!,实际上这种生成器就是一个小算法,通过一定的算法去生成一个个的随机数。
现在网上流行的伪随机生成器的算法大致分为两种:
1.平方取中法
2.线性同余法

线性同余法的随机概率更大一点,相对于平方取中法,随机性更好一点,以下我要讲的也是关于线性同余法产生随机数的方法。

 线性同余法的公式: rNew=(a*rOld+b) % (end-start)其中:  rNew为新种子,a成为乘数,b称为增量,(end-start)称为模数,他们均为常数,然后设置rOld = rNew ,一般要求用户指定种子数rOld(也叫seed),当然也可以自由选择a和b,但是这两个数字选的不好的话,会影响数字的随机性。经过数学家的计算,a,b 最好的值是: a=32310901  ,b=1729

以下代码会以时间为种子(每个时间都是不一样的,这意味着种子不会重复,大大的提高了随机性),以当前时间作为种子,循环得到十个时间种子,每个时间种子会随机生成十个数。

''' 惰性求值    yield  即:你需要时才获取,包含yield语句得函数可以用来创建生成器对象,这样得函数也称生成器函数,每次执行到yiled语句会返回一个值然后暂停或挂起后面得代码得执行,下次通过生成器对象得__next()__方法,内置函数x.next(),for 循环遍历生成器对象元素或其他方式显示“索要”数据恢复执行。'''from random import randint
import timedef myrandint( start,end,seed=999999999 ):a=32310901b=1729rOld=seed   #将种子seed赋值给rOldm=end-start   #得到m 模数while True:rNew=int(( a*rOld+b )%m)   #开始产生随机数yield rNew     #遇到yield关键字暂时挂起后面的代码,等带next(r)的调用并返回 rNewrOld=rNew#模拟使用10个不同得时间种子来生成随机数
'''  获得时间戳,由于计算机运行较快,可能计算机在同一个时间内循环了多次,这会导致时间种子相同的问题。所以保险起见,我用一个随机函数产生的随机数与其相加,更好避免出现重复种子的现象 '''
for i in range(10):      now=time.time()+randint(0,99999)     #时间戳加一个随机数作为种子print(now)r=myrandint(1,10000,now)     #把时间种子作为参数调用myrandint函数#每个种子生成10个随机数print( "种子",now,"生成的随机数:" )for j in range(10):#使用next()函数循环遍历r生成器对象来得到十个随机数print( next(r),end="," )   print()

运行结果:

小伙伴们如果有改善的建议请评论哦,谢谢支持~

Python——伪随机数生成器相关推荐

  1. [Python标准库]random——伪随机数生成器

    Python 版本:1.4 及以后版本         random 模块基于 Mersenne Twister 算法提供了一个快速伪随机数生成器.原先开发这个生成器是为了向蒙特卡洛模拟生成输入,Me ...

  2. 使用python实现伪随机数生成器

    在前两天学习了使用python实现伪随机数的方法,今天是时候来做一个总结了. 首先要说明的是什么是随机数,真正的随机数是使用物理现象产生的:比如掷钱币.骰子.转轮.使用电子元件的噪音.核裂变等等.产生 ...

  3. python标准库生成随机数_Python3标准库:random伪随机数生成器

    1. random伪随机数生成器 random模块基于Mersenne Twister算法提供了一个快速伪随机数生成器.原来开发这个生成器是为了向蒙特卡洛模拟生成输入,Mersenne Twister ...

  4. Python伪随机数模块random

    random模块 该模块实现了各种分布的伪随机数生成器.(包括在实数轴上计算均匀.正态(高斯).对数正态.负指数.伽马和贝塔分布的函数)不应将此模块的伪随机生成器用于安全目的.有关安全性或加密用途,请 ...

  5. python使用生成器生成浮点数列表、使用生成器生成(正)负的浮点数列表

    python使用生成器生成浮点数列表.使用生成器生成(正)负的浮点数列表 目录 pyth

  6. python的生成器

    python的生成器 可以把生成器理解成是特殊的迭代器. 生成器一次只能产生一个值,这样消耗的内存数量将大大减小,而且允许调用函数可以很快的处理前几个返回值,因此生成器看起来像是一个函数,但是表现得却 ...

  7. 计算机仿真随机数生成,伪随机数生成器研究

    摘要: 本文主要考虑了基于计算复杂性定义的伪随机数生成器.介绍了单向函数与伪随机数生成器之间的关系以及几种常见的基于离散对数问题,DDH问题的伪随机数生成器.在分析了它们的安全性和效率的同时也提出了改 ...

  8. [转载] Python的生成器

    参考链接: Python中的生成器Generator Python的生成器 什么是生成器 创建python迭代器的过程虽然强大,但是很多时候使用不方便.生成器是一个简单的方式来完成迭代.简单来说,Py ...

  9. python 迭代器 生成器_Python迭代器和生成器

    迭代器认知 迭代器 (iterator): 如果一个对象同时有__iter__()和__next__()魔术方法的话,这个对象就可以称为是迭代器. __iter__()的作用是可以让for循环遍历.而 ...

  10. gjrand 4.0 发布,C语言的伪随机数生成器

    gjrand 4.0 使用新的底层生成器,生成随机数结果更加无误. gjrand 是一个C语言的伪随机数生成器.伪随机数的意思是在这个随机数并不保证是真正的随机,只适合一些对随机要求不是很高的场合,例 ...

最新文章

  1. Sublime Text 3中文乱码解决方法以及安装包管理器方法
  2. prd模板案例_第三课:产品需求文档——案例分析
  3. wcf系列5天速成——第一天 binding的使用(1)
  4. Java Annotations: Explored Explained--转载
  5. 加载svr模型_机器学习XGBoost实战,网格搜索自动调参,对比随机森林,线性回归,SVR【完整代码(含注释)+数据集见原文链接】...
  6. Java虚拟机:常见JVM参数配置和GC性能优化
  7. java计算器简单吗,java简单计算器
  8. Netflix Archaius用于物业管理–基础知识
  9. dell服务器安装系统注意之二.(2003/xp 的sn)
  10. ub c语言,操作系统之LRU算法 C语言链表实现
  11. 第 12 章 组合模式
  12. repo init 是啥意思
  13. (转)OPEC神秘的“朋友圈”:全球最大原油对冲基金掌门人安杜兰
  14. 界面设计必备,常用字体规范
  15. NOIP2017题解
  16. mysql 时间查询_MYSQL按时间段查询语句大全
  17. 饭后Android 第三餐-XUI框架(XUI介绍,使用方法,控件使用(九个Button,导航栏,可伸缩布局,顶部弹出框))
  18. 一本书读懂大数据 读书笔记(1)
  19. flutter_blue使用
  20. 外贸实用网站集锦 外贸智能获客系统 贸易动力

热门文章

  1. android通讯录开发二 数据表各字段含义
  2. Linux查看服务器SN序列码
  3. 论文阅读|Embodied Hands: Modeling and Capturing Hands and Bodies Together
  4. 读《所谓情商高,就是会说话》笔记
  5. 新方法使虚拟现实中的无限行走变为可能
  6. “电动车之王”还不够,雅迪高端品牌怎么打?
  7. 计算机中寄存器的定义,寄存器,寄存器是什么意思
  8. EBS INV:事务处理
  9. 热释电探测器多用在_热释电红外探测器
  10. bootstrap按钮组btn-group