详解Python基础random模块随机数的生成


Posted in Python onMarch 23, 2019

随机数参与的应用场景大家一定不会陌生,比如密码加盐时会在原密码上关联一串随机数,蒙特卡洛算法会通过随机数采样等等。Python内置的random模块提供了生成随机数的方法,使用这些方法时需要导入random模块。

import random

下面介绍下Python内置的random模块的几种生成随机数的方法。
1、random.random() 随机生成 0 到 1 之间的浮点数[0.0, 1.0) 。

print("random: ", random.random())
#random: 0.5714025946899135

2、random.randint(a , b) 随机生成 a 与 b 之间的整数[a, b]。

print("randint: ", random.randint(6,8))
#randint: 8

3、random.randrange(start,stop,step)按步长step随机在上下限范围内取一个随机数。

print("randrange: ",random.randrange(20,100,5))
#randrange: 85

4、random.uniform(a, b) 随机生成 a 与 b 之间的浮点数[a, b]。

print("uniform: ",random.uniform(5,10))
#uniform: 5.119790163375776

5、random.choice() 从列表中随机取出一个元素,比如列表、元祖、字符串等。注意的是,该方法需要参数非空,否则会抛出 IndexError 的错误。

print("choice: ",random.choice("www.yuanxiao.net"))
#choice: y

6、random.shuffle(items) 把列表 items 中的元素随机打乱。注意的是,如果不想修改原来的列表,可以使用 copy 模块先拷贝一份原来的列表。

num = [1, 2, 3, 4, 5]
random.shuffle(num)
print("shuffle: ",num)
#shuffle: [1, 3, 5, 4, 2]

7、random.sample(items, n) 从列表 items 中随机取出 n 个元素。

num = [1, 2, 3, 4, 5]
print("sample: ",random.sample(num, 3))
#sample: [4, 1, 5]

Python 的random模块产生的随机数其实是伪随机数,依赖于特殊算法和指定不确定因素(种子seed)来实现。如randint方法生成一定范围内的随机数,会先指定一个特定的seed,将seed通过特定的随机数产生算法,得到一定范围内随机分布的随机数。因此对于同一个seed值的输入产生的随机数会相同,省略参数则意味着使用当前系统时间秒数作为种子值,达到每次运行产生的随机数都不一样。

random.seed(2)
print("random: ", random.random())
#random: 0.9560342718892494

random.seed(3)
print("random: ", random.random())
#random: 0.23796462709189137

random.seed(3)#同一个种子值,产生的随机数相同
print("random: ", random.random())
#random: 0.23796462709189137

numpy库也提供了random模块,用于生成多维度数组形式的随机数。使用时需要导入numpy库。

import numpy as np

下面介绍下numpy库的random模块的几种生成随机数的方法。

1、numpy.random.rand(d0,d1,…,dn)

  1. rand函数根据给定维度生成[0,1]之间的数据,包含0,不包含1
  2. dn表格每个维度
  3. 返回值为指定维度的array
print("np.random.rand:\n {}".format(np.random.rand(4,2))) # shape: 4*3
"""
np.random.rand:
 [[0.5488135 0.71518937]
 [0.60276338 0.54488318]
 [0.4236548 0.64589411]
 [0.43758721 0.891773 ]]
"""

print("np.random.rand:\n {}".format(np.random.rand(4,3,2))) # shape: 4*3*2
"""
np.random.rand:
 [[[0.96366276 0.38344152]
 [0.79172504 0.52889492]
 [0.56804456 0.92559664]]

 [[0.07103606 0.0871293 ]
 [0.0202184 0.83261985]
 [0.77815675 0.87001215]]

 [[0.97861834 0.79915856]
 [0.46147936 0.78052918]
 [0.11827443 0.63992102]]

 [[0.14335329 0.94466892]
 [0.52184832 0.41466194]
 [0.26455561 0.77423369]]]
"""

 2、numpy.random.randn(d0,d1,…,dn)

  1. randn函数返回一个或一组样本,具有标准正态分布。
  2. dn表格每个维度
  3. 返回值为指定维度的array
  4. 标准正态分布—-standard normal distribution
  5. 标准正态分布又称为u分布,是以0为均值、以1为标准差的正态分布,记为N(0,1)。
print("np.random.randn:\n {}".format(np.random.randn())) # 当没有参数时,返回单个数据
"""
np.random.randn:
 2.2697546239876076
"""
print("np.random.randn:\n {}".format(np.random.randn(2,4)))
"""
np.random.randn:
 [[-1.45436567 0.04575852 -0.18718385 1.53277921]
 [ 1.46935877 0.15494743 0.37816252 -0.88778575]]
"""
print("np.random.randn:\n {}".format(np.random.randn(4,3,2)))
"""
np.random.randn:
 [[[-1.98079647 -0.34791215]
 [ 0.15634897 1.23029068]
 [ 1.20237985 -0.38732682]]

 [[-0.30230275 -1.04855297]
 [-1.42001794 -1.70627019]
 [ 1.9507754 -0.50965218]]

 [[-0.4380743 -1.25279536]
 [ 0.77749036 -1.61389785]
 [-0.21274028 -0.89546656]]

 [[ 0.3869025 -0.51080514]
 [-1.18063218 -0.02818223]
 [ 0.42833187 0.06651722]]]
"""

3、numpy.random.randint(low, high=None, size=None, dtype='l')

  1. 返回随机整数,范围区间为[low,high),包含low,不包含high
  2. 参数:low为最小值,high为最大值,size为数组维度大小,dtype为数据类型,默认的数据类型是np.int
  3. high没有填写时,默认生成随机数的范围是[0,low]
print("np.random.randint:\n {}".format(np.random.randint(1,size=5)))# 返回[0,1)之间的整数,所以只有0
"""
np.random.randint:
 [0 0 0 0 0]
"""
print("np.random.randint:\n {}".format(np.random.randint(1,5)))# 返回1个[1,5)时间的随机整数
"""
np.random.randint:
 2
"""
print("np.random.randint:\n {}".format(np.random.randint(-5,5,size=(2,2))))
"""
np.random.randint:
 [[-5 -3]
 [ 2 -3]]
"""

4、numpy.random.seed()

  1. np.random.seed()的作用:使得随机数据可预测。
  2. 当我们设置相同的seed,每次生成的随机数相同。如果不设置seed,则每次会生成不同的随机数

以上所述是小编给大家介绍的Python基础random模块随机数的生成详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Python 相关文章推荐
极简的Python入门指引
Apr 01 Python
详解python中requirements.txt的一切
Mar 03 Python
python调用系统ffmpeg实现视频截图、http发送
Mar 06 Python
python3+PyQt5图形项的自定义和交互 python3实现page Designer应用程序
Jul 20 Python
Numpy之文件存取的示例代码
Aug 03 Python
Python3.5多进程原理与用法实例分析
Apr 05 Python
pytorch打印网络结构的实例
Aug 19 Python
python将数组n等分的实例
Dec 02 Python
Python3.x+迅雷x 自动下载高分电影的实现方法
Jan 12 Python
在pycharm中使用matplotlib.pyplot 绘图时报错的解决
Jun 01 Python
python实现简单石头剪刀布游戏
Oct 24 Python
Python基本的内置数据类型及使用方法
Apr 13 Python
Python基本数据结构与用法详解【列表、元组、集合、字典】
Mar 23 #Python
Django异步任务之Celery的基本使用
Mar 23 #Python
深入解析Python小白学习【操作列表】
Mar 23 #Python
Python基础之条件控制操作示例【if语句】
Mar 23 #Python
Python基础之循环语句用法示例【for、while循环】
Mar 23 #Python
详解python中sort排序使用
Mar 23 #Python
Python基础之函数的定义与使用示例
Mar 23 #Python
You might like
PHP解析RSS的方法
2015/03/05 PHP
PHP使用DOM和simplexml读取xml文档的方法示例
2017/02/08 PHP
[原创]js与自动伸缩图片 自动缩小图片的多浏览器兼容的方法总结
2007/03/12 Javascript
利用Dojo和JSON建立无限级AJAX动态加载的功能模块树
2007/03/24 Javascript
通过JS 获取Mouse Position(鼠标坐标)的代码
2009/09/21 Javascript
JavaScript setTimeout和setInterval的使用方法 说明
2010/03/25 Javascript
JavaScript打开word文档的实现代码(c#)
2012/04/16 Javascript
js如何调用qq互联api实现第三方登录
2014/03/28 Javascript
手机号码,密码正则验证
2014/09/04 Javascript
js给网页加上背景音乐及选择音效的方法
2015/03/03 Javascript
jQuery插件Zclip实现完美兼容个浏览器点击复制内容到剪贴板
2015/04/30 Javascript
利用n工具轻松管理Node.js的版本
2017/04/21 Javascript
20行JS代码实现网页刮刮乐效果
2017/06/23 Javascript
jQuery validata插件实现方法
2017/06/25 jQuery
Vue2 Vue-cli中使用Typescript的配置详解
2017/07/24 Javascript
vue2.0 父组件给子组件传递数据的方法
2018/01/15 Javascript
Vue 的双向绑定原理与用法揭秘
2020/05/06 Javascript
基于js实现判断浏览器类型代码实例
2020/07/17 Javascript
聊聊vue 中的v-on参数问题
2021/01/29 Vue.js
JavaScript 生成唯一ID的几种方式
2021/02/19 Javascript
wxPython事件驱动实例详解
2014/09/28 Python
Python的string模块中的Template类字符串模板用法
2016/06/27 Python
python 迭代器和iter()函数详解及实例
2017/03/21 Python
python3读取MySQL-Front的MYSQL密码
2017/05/03 Python
python实现决策树C4.5算法详解(在ID3基础上改进)
2017/05/31 Python
python实现爬取图书封面
2018/07/05 Python
Python简单实现词云图代码及步骤解析
2020/06/04 Python
Elemis美国官网:英国的第一豪华护肤品牌
2018/03/15 全球购物
英国领先的在线鱼贩:The Fish Society
2020/08/12 全球购物
《陶罐和铁罐》教学反思
2014/02/19 职场文书
卫生标语大全
2014/06/21 职场文书
房屋买卖授权委托书
2014/09/27 职场文书
幼儿园教师考核评语
2014/12/31 职场文书
2015年政务公开工作总结
2015/05/19 职场文书
2015年英语教学工作总结
2015/05/25 职场文书
如何写好活动总结
2019/06/21 职场文书