更新时间:2019.09.12(更新目录)

目录
1. 谈谈随机数
2. random模块
  2.1 random.seed()
  2.2 random.random()
  2.3 random.randrange()
  2.4 random.randint()
  2.5 random.uniform()
  2.6 random.sample()
  2.7 random.choice()
  2.8 random.choices()
  2.9 random.shuffle()
3. 其他补充资料

1. 谈谈随机数:

  我们经常会用到随机数,对它也并不陌生。但是谈到如何使用计算机来生成随机数的时候,我们便会发现,无论是多么先进的计算机都难以实现真正意义上完全随机的数。实际上,我们使用计算机生成的都是伪随机数。虽说是“伪”随机数,但也不能说它是假的随机数,而是应该归为有一定规律的随机数

  那为什么说这些计算机生成的数是“有规律”的呢?主要是这些随机数都是通过随机数种子来迭代计算生成的,通常来说这些随机数种子来自于当前系统的时间戳或者操作系统中的随机源。并且由于每台计算机的硬件层面都有所不同,所以用不同计算机生成的随机数基本都是不同的(系统时间是通过计算机主板的定时计数器来计算的)。

  如果我们固定随机数种子后,每次在同一台计算机得到的随机数都是一样的。而对于默认由系统时间戳得到的随机数种子,在短时间内生成大量随机数时也会出现不少重复。因此,如果我们想生成接近于真正意义上的随机上,就需要对随机数种子设置更多的参考指标。

2. Random模块---用于生成各种分布的伪随机数

2.1 random.seed(a=None, version=2):
  • 作用:设置随机数种子,
  • 参数:第一个如果不指定就默认是当前的系统时间戳或者操作系统中提供的随机源,第二个参数是指所使用的种子版本(version),默认是版本2,可以将str、byte、bytearay等对象转为int并使用所有位。而版本1(旧)是用于str和byte生成更窄的种子范围。
  • 例子:
2.2 random.random():
  • 作用:获取区间[0, 1)的一个浮点随机数
  • 参数:不需要参数
  • 例子:
2.3 random.randrange(start, stop[, step]):(其实就好像range一样
  • 作用:在指定的范围里,随机抽取一个整数
  • 参数:接收的都是整数,第一个是start,第二个是stop,第三个是步长step(可选)
  • 例:
2.4 random.randint(a, b):
  • 作用:从[a, b]中生成一个随机整数,等价于random.randrange(a, b+1)
  • 参数:a表示起始范围,b表示终止范围
  • 例:
2.5 random.uniform(a, b):
  • 作用:获取区间[a, b)或者[a, b]的一个浮点随机数
  • 参数:如果a > b, 则获取的随机数是b<=N<=a,如果a < b, 则获取的随机数是a<=N<=b
  • tip:由于它是根据a+(b-a)*random.random(),并对结果进行舍入,所以可能包含边界b也可能不包含b
  • 例:
2.6 random.sample(seq, k):
  • 作用:用于样本抽样
  • 参数:第一个是序列或者集合(像当总体较大时指定range()作为参数,即快又节省内存),第二个是用于指定选取几个样本,最后返回样本列表
  • tip1:从总体序列或者集合中不放回地选取n个样本,其中样本数不能大于总体序列的长度
  • tip2:如果序列中有包含重复的元素,这些元素都有机会入样
  • 例:
2.7 random.choice(seq):
  • 作用:从一个非空的序列中随机选择一个元素
  • 参数:非空序列
  • 例:
2.8 random.choices(seq, weights=None, *, cum_weights=None, k=1):
  • 作用:可以对序列的元素给定权重(权重的个数要和序列的长度相同),并且选取多个元素,不给定时默认各个元素的权重是相等的
  • 参数:第一个序列,第二三个是权重(可选),第四个是选择个数,最后返回的是一个列表
  • tip1:权重的形式可以是相对权重weights(像[10,30,40,20])或者累计权重cum_weights(像[10, 40, 80, 100])。但实际上在执行时,相对权重会转化为累计权重,因此直接使用累计权重可以节省工作量
  • tip2:权重可以指定任何的数字形式(整数、浮点数、分数等)
  • 例:
2.9 random.shuffle(seq):
  • 作用:将可变序列元素的位置打乱
  • 参数:要打乱位置的序列
  • tip:如果想将不可变序列(像元组、字符串等)的元素位置打乱,可以使用random.sample(x, len(x))
  • 例:

3. 其他补充资料:

实际上有许多中方法来计算随机数,像Python就是用梅森旋转法来计算的。

Python标准库---random模块的使用的更多相关文章

  1. [python标准库]Pickle模块

    Pickle-------python对象序列化 本文主要阐述以下几点: 1.pickle模块简介 2.pickle模块提供的方法 3.注意事项 4.实例解析 1.pickle模块简介 The pic ...

  2. Python 标准库 ConfigParser 模块 的使用

    Python 标准库 ConfigParser 模块 的使用 demo #!/usr/bin/env python # coding=utf-8 import ConfigParser import ...

  3. Python标准库——collections模块的Counter类

    1.collections模块 collections模块自Python 2.4版本开始被引入,包含了dict.set.list.tuple以外的一些特殊的容器类型,分别是: OrderedDict类 ...

  4. [python标准库]XML模块

    1.什么是XML XML是可扩展标记语言(Extensible Markup Language)的缩写,其中的 标记(markup)是关键部分.您可以创建内容,然后使用限定标记标记它,从而使每个单词. ...

  5. 【python】Python标准库defaultdict模块

    来源:http://www.ynpxrz.com/n1031711c2023.aspx Python标准库中collections对集合类型的数据结构进行了很多拓展操作,这些操作在我们使用集合的时候会 ...

  6. python标准库 bisect模块

    # -*- coding: utf-8 -*- # python:2.x __author__ = 'Administrator' #bisect #作用:维护有序列表,而不必在每次向列表增加一个元素 ...

  7. Python标准库--os模块

    这个模块包含普遍的操作系统功能.如果你希望你的程序能够与平台无关的话,这个模块是尤为重要的.即它允许一个程序在编写后不需要任何改动,也不会发生任何问题,就可以在Linux和Windows下运行.一个例 ...

  8. Python标准库Random

    基本方法 获取一个[0,1)的随机浮点数: import random print(random.random()) #输出 0.6701488343121276 获取指定区间的随机浮点数: impo ...

  9. python标准库 sysconfig模块

    # -*- coding: utf-8 -*-# python:2.x__author__ = 'Administrator'import sysconfig#sysconfig:解释器编译时配置#作 ...

随机推荐

  1. 素数路径Prime Path POJ-3126 素数,BFS

    题目链接:Prime Path 题目大意 从一个四位素数m开始,每次只允许变动一位数字使其变成另一个四位素数.求最终把m变成n所需的最少次数. 思路 BFS.搜索的时候,最低位为0,2,4,6,8可以 ...

  2. Jmeter BeanShell 执行多次问题,每发送一次请求执行一次BeanShell问题

    前言:(此问题耗时半天) 提供解决思路的博主又有新问题了. 如图所示,写了一个BeanShell从文件中去获取值之后给测试计划的变量赋值. 问题来了,当禁用b的情况下,a只执行一次.当启用b请求的情况 ...

  3. Python学习笔记整理总结【Django】:Form组件

     Form组件  Django的Form主要具有一下几大功能: --生成HTML标签 --验证用户数据(显示错误信息) --HTML Form提交保留上次提交数据 --初始化页面显示内容 1.内置字段 ...

  4. KD-tree学习笔记(超全!)

    目录 K-D树 更新信息 建树 插入 查询 k远/近询问 重构 K-D 树优化建边 后记 因为之前找不到全的博客,唯一的一篇码风比较毒瘤... 所以我就来写了 K-D树 大概是高维二叉树吧 每次按一个 ...

  5. 夯实Java基础系列21:Java8新特性终极指南

    本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 https://github.com/h2pl/Java-Tutorial 喜欢的话麻烦点下 ...

  6. MongoDB 学习笔记之 手动预先分片

    手动预先分片: 目的:手动预先分片是为了防止未来chunk的移动,减少IO. sh.shardCollection("shop.users",{"userId" ...

  7. resmgr:cpu quantum等待事件 触发的bug问题

    1>resmgr:cpu quantum等待事件 触发的bug问题  (处理心得) 1.客户反馈数据库服务器在某个时间段总是特别繁忙,获取awr报告分析繁忙原因

  8. ssrf漏洞学习(PHP)

    自己最近原本是想深入的学习一下关于xss.csrf的东西的,可是感觉这些东西需要有很好的js的基础来进行学习..还有感觉自己感觉也差不多该要学习内网渗透了..正好ssrf在内网这一块也是比较有用的.于 ...

  9. 我在用的翻译软件 -> 微软翻译+网易有道词典+谷歌翻译

    Windows网页翻译 因为微软翻译相对来说翻译网页更为准确,我也喜欢用谷歌的Chrome浏览器,但是我没找到微软翻译的扩展,这里只能放弃 这个需要配合Microsoft Edge浏览器进行使用,也是 ...

  10. Spring Cloud之Hystrix

    在微服务架构中,存在那么多的服务单元,若一个单元出现故障(由于网络原因或者自身原因),就很容易因依赖关系而引发故障的蔓延,最终导致整个系统的瘫痪,这样的架构相较传统架构更加不稳定.为了解决这样的问题, ...