random---伪随机数生成器

python3.5

作用:实现了多种类型的伪随机数生成器

random模块基于Mersenne Twister 算法提供了一个快速伪随机数生成器。原先开发这个生成器是为了向蒙特卡洛模拟生成输入,Mersenne Twister算法会生成有一个大周期的近均匀分布的数,以适用于各种类型的应用。

 

1.生成随机数

random()函数从所生成的序列返回下一个随机的浮点数值。返回的所有值都在0-n之间。

image

import random

for i in range(5):
    print("%04.3f" % random.random())
0.166
0.201
0.282
0.920
0.429

要生成一个指定数值区间内的数,则要使用uniform().

image

import random

for i in range(3):
    print("%.3f" % random.uniform(1,100))
3.520
79.323
15.854

传入最大值和最小值,uniform()会使用公式min+(max-min)*random()来调整random()的返回值

 

2.指定种子

每次调用random()会生成不同的值,在一个非常的的周期之后数字才会重复。这对于生成唯一值或变化的值很有用,不过有些情况下可能需要提供相同的数据集,从而以不同的方式处理。对此,一种方法是使用一个程序来生成随机数,并保存这些随机数,以便通过一个单独的方式另行处理。不过对于量很大的数据来说可能并不实用,所以random包含了一个seed()函数,用来初始化伪随机数生成器,使它能生成一个期望的值集。

image

image

种子(seed)值会控制生成伪随机数所用公式产生的第一个值,由于公式是确定的,改变种子也就设置了整个要生成的序列。seed()的参数可以是任意可散列对象。默认会使用平台特定的随机源(如果有的话)。否则,会使用当前时间。

【伪随机数之所以是伪,应该就是这个原因了吧,种子定了,整个序列就定了,通过不短变换种子值得到随机数】

 

3.保存状态

random()使用的伪随机算法的内部状态可以保存,并用于控制后续各轮生成的随机数。继续生成随机数之前恢复前一个状态,这会减少有之前输入得到重复的值或值序列的可能性。getstate()函数会返回一些数据,以后可以用setstate()利用这些数据重新初始化伪随机数生成器。

import random
import os
import pickle

if os.path.exists('state.dat'):
    print("Found state.dat, initializing random module")
    with open('state.dat','rb') as fp:
        state=pickle.load(fp)
    random.setstate(state)
else:
    print("No state.dat, seeding")
    random.seed(1)

for i in range(3):
    print("%.3f" % random.random())
print()

with open('state.dat','wb') as fp:
    pickle.dump(random.getstate(),fp)

print("\nAfter saving state")
for i in range(3):
    print("%.3f" % random.random())
print()

gerstate()返回的数据是一个实现细节,所以这个例子用pickle将数据保存到一个文件,不过可以把它当作一个黑盒。如果程序开始是这个文件存在,则加载原来的状态并继续。每次运行时都会在保存之前及之后生成一些书,以展示恢复状态会导致生成器在次生成同样的值

image

image

image

【相当于电影重放一样,设置一个节点getstate()[记录播放到的时间],用setstate()回到上次节点的时间,再次播放一遍】

 

4.随机整数

random()将生成浮点数。可以吧结果转换为整数,不过直接使用randint()生成整数会更方便。

import random

print("[1,100]")
for i in range(5):
    print(random.randint(1,100),end=' ')
print()

print("[-10,5]")
for i in range(5):
    print(random.randint(-10,5),end=' ')

 

 

image

randint()的参数的值是闭区间的两端。这些数可以是正数或负数,不过第一个值要小于第二个值。

randrange()是从区间选择值的一种更一般的形式。除了开始值(start)和结束值(stop),randrange()还支持步长(step)参数,所以它完全等价于从range(start,stop,step)选择一个随机值。不过randrange更高效,因为它并没有真正构造区间。

 

5.选择随机元素 choice()

在一个序列中随机选择。

模拟抛硬币:

view plaincopy to clipboardprint
  1. import random  
  2.  
  3. out={'heads':0,'tail':0}  
  4.  
  5. sides=['heads','tail']  
  6.  
  7. for i in range(100000):  
  8.     out[random.choice(sides)]+=1 
  9.  
  10. print('head:',out['heads'])  
  11. print('tail:',out['tail']) 
 

image_thumb[1]

这样不必再使用数字进行转换

 

。。。,排列,采样,多个并发生成器,SystemRandom,非均匀分布,角分布,大小分布

转载于:https://www.cnblogs.com/DreamZero/p/5071558.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/404462.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

新浪微博iOS版SDK“宝玉XP”框架学习笔记

本文为论坛会员3h2om分享,对新浪微博iOS版SDK-“宝玉XP”框架进行研究所写的学习笔记,非常详细和精彩。 本人刚入学iOS开发,在学习的过程中,对新浪微博iOS版SDK-“宝玉XP”框架进行了学习(下载地址:https:/…

Lync Server 2010所需媒体网络流量带宽详解和计算

如果在组织内部部署Lync Server 2010,那么最大的优势就是解决了组织内部的即时通讯需求,为什么这么说?因为纵观现在微软所推行的商业智能应用平台,可以非常直观的了解到实际上整个微软商业平台就是由Lync Server、Exchange Server…

Linux互斥锁的使用代码实现

From: http://blog.csdn.net/leo115/article/details/8037869 [cpp] view plaincopy#include <stdio.h> #include <pthread.h> #include <sched.h> #include <unistd.h> //对临界区的保护问题 void *fun1(void *arg); void *fun2(void *ar…

USB Camera摄像头(UVC 与 gspca)

From: http://www.cnblogs.com/leaven/archive/2010/08/19/1802934.html http://weijb0606.blog.163.com/blog/static/131286274201063145356429/ 我的摄像头终于出现图像了&#xff01; 李迟按&#xff1a;本文章不是教程&#xff0c;不是心得总结&#xff0c;而是记录我在…

随机存取存储器(RAM)

RAM&#xff08;random access memory&#xff09;随机存储器。存储单元的内容可按需随意取出或存入&#xff0c;且存取的速度与存储单元的位置无关的存储器。这种存储器在断电时将丢失其存储内容&#xff0c;故主要用于存储短时间使用的程序。 按照存储信息的不同&#xff0c;…

创建弹出窗口的图片展示

本帖最后由 oisweb 于 2009-11-24 14:11 编辑图片有点大了 显示不是很好 自己看着办吧 1 创建工程 设置页面属性 <mx:Application xmlns:mx"http://www.adobe.com/2006/mxml" layout"vertical" horizontalAlign"center" verticalAlign&…

移植gdb到DM368 IPNC中 linux arm gdb

From: http://blog.csdn.net/ghostyu/article/details/8081897 移植gdb到嵌入式的ipnc中&#xff0c;大多数人习惯使用printf调试&#xff0c;但是遇到像”segment fault“这的错误也是后就很难定位&#xff0c;这时候gdb的作用就体现出来了 在pc使用gdb调试应用程序前&…

Silverlight实用窍门系列:56.Silverlight中的Binding使用(一)【附带实例源码】

本文将详细讲述Silverlight中Binding&#xff0c;包括Binding的属性和用法&#xff0c;Binding的数据流向。 Binding:一个完整的Binding过程是让源对象中的某个属性值通过一定流向规则进行转换和验证之后绑定到目标对象的某个属性上面。这个源对象由ElementName指定&#xff0c…

jqGrid + JSON + WebService 完整示例

真没找到这样的例子&#xff0c;于是自已写了个&#xff0c;分享出来。 第一步&#xff0c;首先在WebService上&#xff0c;添加[System.Web.Script.Services.ScriptService]属性标签&#xff0c;让WebServer支持JSON. namespace jqGrid_JSON_WebService_Sample.Services{/// &…

交叉编译和交叉调试环境搭建及使用

From: http://blog.chinaunix.net/uid-25119314-id-226230.html 1. 交叉编译器 1.1 交叉编译器介绍 在一种计算机环境中运行的编译程序&#xff0c;能编译出在另外一种环境下运行的代码&#xff0c;我们就称这种编译器支持交叉编译。这个编译过程就叫交叉编译。简单地说&…

Hello Views之Spinner(yaozq翻译,仅供参考)

Spinner是一种类似于下拉列表的widget。 在这个教程中&#xff0c;你将创建一个简单的用于展示星球列表的spinner组件。当选择列表中的一项时&#xff0c;将会弹出一个表示所选项的toast信息。下面是具体步骤&#xff1a; 1&#xff0c;新建一个名为HelloSpinner的项目。 2&…

Bitmap 之 getPixels() 的 stride

学习Graphics中遇到位图(Bitmap)中getPixels()方法&#xff0c;对该方法的用法大体理解&#xff0c;但对其中的stride参数却不明白具体的用法以及用意&#xff0c;现记述过程如下&#xff1a; getPixels()方法的用处为获取位图(Bitmap)中的像素值(颜色值)&#xff0c;存入类型为…

i++ 和 ++i 效率的分析以及自定义类型的自增/自减运算符重载实例

From: http://blog.csdn.net/leo115/article/details/8101541 我们通常在写for循环 的时候&#xff0c;要实现变量 i 的自增 1 &#xff1b;往往会在i 和i中随便挑一种写&#xff0c;对于i和i的理解&#xff0c;我们往往停留在返回的值的不同&#xff0c;其实i与i在实现效率上…

BZOJ 1146: [CTSC2008]网络管理Network( 树链剖分 + 树状数组套主席树 )

树链剖分完就成了一道主席树裸题了, 每次树链剖分找出相应区间然后用BIT(可持久化)权值线段树就可以完成计数. 但是空间问题很严重....在修改时不必要的就不要新建, 直接修改原来的..详见代码. 时间复杂度O(N*log^3(N))------------------------------------------------------…

struts2遍历select

2019独角兽企业重金招聘Python工程师标准>>> <s:bean name"org.apache.struts2.util.Counter" id"counter"> <s:param name"first" value"1" /> <s:param name"last" value"pageCount"…

Oracle 彻底 kill session

为什么80%的码农都做不了架构师&#xff1f;>>> --*************************** -- Oracle 彻底 kill session --*************************** kill session 是DBA经常碰到的事情之一。如果kill 掉了不该kill 的session&#xff0c;则具有破坏性&#xff0c;因此尽…

WebService学习总结——调用第三方提供的webService服务

互联网上面有很多的免费webService服务&#xff0c;我们可以调用这些免费的WebService服务&#xff0c;将一些其他网站的内容信息集成到我们的Web应用中显示&#xff0c;下面就以获取天气预报数据。气象中心的管理系统将收集的天气信息并将数据暴露出来(通过WebService Server)…

【017】◀▶ C#学习(九) - ADO.NET

《C#入门经典&#xff08;中文第四版&#xff09;》在程序中访问数据库学习笔记 --------------------------------------------------------------------------------------------------------- ●● 目录&#xff1a; A0 ………… System.Data.SqlClient 命名空间 A1 ……………

【转】主流PHP框架间的比较(Zend Framework,CakePHP,CodeIgnit...

2019独角兽企业重金招聘Python工程师标准>>> 【转】主流PHP框架间的比较&#xff08;Zend Framework&#xff0c;CakePHP&#xff0c;CodeIgniter&#xff0c;Symfony&#xff0c;ThinkPHP&#xff0c;FleaPHP&#xff09; 2011年08月14日 星期日 12:51 转载自 leol…

如何利用业务时间提升自我

转载于:https://www.cnblogs.com/helloIT/articles/5140273.html