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,一经查实,立即删除!

相关文章

[react] 写一个react的高阶组件并说明你对高阶组件的理解

[react] 写一个react的高阶组件并说明你对高阶组件的理解 定义高阶组件 import React, { Component } from react;const simpleHoc WrappedComponent > { console.log(simpleHoc); return class extends Component { render() { return <WrappedComponent {...this.…

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

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

[react] 描述下在react中无状态组件和有状态组件的区别是什么?

[react] 描述下在react中无状态组件和有状态组件的区别是什么&#xff1f; 1&#xff0c;无状态组件主要用来定义模板&#xff0c;接收来自父组件props传递过来的数据&#xff0c;使用{props.xxx}的表达式把props塞到模板里面。无状态组件应该保持模板的纯粹性&#xff0c;以便…

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

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

Linux进程状态解析之R、S、D、T、Z

From: http://bbs.hx95.com/read-htm-tid-208094-fpage-2.html R (TASK_RUNNING)&#xff0c;可执行状态。 只有在该状态的进程才可能在CPU上运行。同一时刻可能有多个进程处于可执行状态&#xff0c;这些进程的task_struct结构&#xff08;进程控制块&#xff09;被放入对…

[react] react父子组件如何通信?

[react] react父子组件如何通信&#xff1f; props 个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起通关前端面试题

PAT 1100

1100. Mars Numbers (20) 时间限制400 ms内存限制65536 kB代码长度限制16000 B判题程序Standard作者CHEN, YuePeople on Mars count their numbers with base 13: Zero on Earth is called "tret" on Mars.The numbers 1 to 12 on Earch is called "jan, feb, m…

安装linux的准备

首先&#xff0c;在安装linux系统之前应首先做到规划。因为&#xff0c;一个好的服务器&#xff0c;工作台&#xff0c;甚至是个人PC都必须要做到规划。因为这样可以做到以最少的花费实现更高的服务要求。这个很好理解&#xff0c;比如你做邮件服务器就必须要选择一个大的硬盘预…

printf如何输出64位整数

From: http://blog.csdn.net/zzqhost/article/details/6064886 关于printf函数输出64位数的问题&#xff0c;其实在window下和linux下是不一样的&#xff1a; linux下是 printf("%lld/n",a); printf("%llu/n",a); windows下是 printf("%I64d/n"…

[react] 在react中你是怎么进行状态管理的?

[react] 在react中你是怎么进行状态管理的&#xff1f; 使用React原生的ContextuseContext(可选的加上useReducer)使用redux react-redux redux-thunk使用mobx mobx-react 个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定…

iOS UI-常用控件

1 #import "ViewController.h"2 3 interface ViewController ()<UITextFieldDelegate>4 5 // 标题标签6 property (strong, nonatomic) UILabel *titleLablel;7 // 分段控制器8 property (strong,nonatomic) UISegmentedControl *segment;9 // 开关标签10 prop…

天龙八部***核心代码

天龙八部***核心代码 信息来源&#xff1a;邪恶八进制信息安全团队&#xff08;www.eviloctal.com&#xff09; 文章作者&#xff1a;认真的雪 我也来凑凑热闹..... 发一个网游***核心代码...无聊的时候写的.. 截取了用户名&#xff0c;密码&#xff0c;等级&#xff0c;仓库密…

Linux常用错误码--errno-base.h

经常会需要用到错误码&#xff0c;但是它具体的值 是什么呢&#xff0c;往往不太清楚&#xff0c;所以在使用的时候非常不舒服&#xff0c;下面把linux平台下常用的错误码列了下。 我是Fedora12系统&#xff0c;找到的定义文件是&#xff1a;/usr/include/asm-generic/errno-b…

[react] react组件的state和props两者有什么区别?

[react] react组件的state和props两者有什么区别&#xff1f; State 是一种数据结构&#xff0c;用于组件挂载时所需数据的默认值。State 可能会随着时间的推移而发生突变&#xff0c;但多数时候是作为用户事件行为的结果。 Props(properties 的简写)则是组件的配置。props 由…

[react] react与angular、vue有什么区别?

[react] react与angular、vue有什么区别&#xff1f; Angular以前有接触过&#xff0c;我的感觉是&#xff0c;这不像React和Vue一样是构架补充库&#xff08;比如需要另外的全家桶来配合使用&#xff09;&#xff0c;它的功能非常完整&#xff0c;更像是一个框架&#xff0c;…

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…

南京Uber优步司机奖励政策(12月28日到1月3日)

滴快车单单2.5倍&#xff0c;注册地址&#xff1a;http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单&#xff1a;http://www.cnblogs.com/mfryf/p/4612609.html 优步奖励低/不挣钱/怎么办?看这里&#xff1a;http://www.cnblogs.com/mfry…

[react] 说说你对声明式编程的理解?

[react] 说说你对声明式编程的理解&#xff1f; 声明式编程 区别于命令式编程,它的特点就是我告诉计算机做什么,但是没有告诉你怎么做. 个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌…

有谁用过sendinput摸拟一个鼠标击键?

我想用&#xff0c;但定义了MOUSEINPUT和INPUT结构&#xff0c;编译是时出现这个错误&#xff1a; E:\My document\VCprograms\13\13.cpp(152) : error C2065: MOUSEINPUT : undeclared identifier E:\My document\VCprograms\13\13.cpp(152) : error C2065: INPUT : undeclare…

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;而是记录我在…