详解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统计一个文本中重复行数的方法
Nov 19 Python
python进程管理工具supervisor的安装与使用教程
Sep 05 Python
Django objects的查询结果转化为json的三种方式的方法
Nov 07 Python
python的pstuil模块使用方法总结
Jul 26 Python
Python基础之函数原理与应用实例详解
Jan 03 Python
python 中的[:-1]和[::-1]的具体使用
Feb 13 Python
python中有帮助函数吗
Jun 19 Python
Python requests及aiohttp速度对比代码实例
Jul 16 Python
python简单利用字典破解zip文件口令
Sep 07 Python
Python实现Word文档转换Markdown的示例
Dec 22 Python
Python之京东商品秒杀的实现示例
Jan 06 Python
Python开发.exe小工具的详细步骤
Jan 27 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文本操作类
2006/11/25 PHP
PHP MemCached 高级缓存应用代码
2010/08/05 PHP
从零开始学YII2框架(六)高级应用程序模板
2014/08/20 PHP
PHP魔术方法的使用示例
2015/06/23 PHP
php微信公众平台开发之获取用户基本信息
2015/08/17 PHP
Laravel中使用FormRequest进行表单验证方法及问题汇总
2016/06/19 PHP
PHP微信企业号开发之回调模式开启与用法示例
2017/11/25 PHP
关于document.cookie的使用javascript
2008/04/11 Javascript
实现web打印的各种方法介绍及实现代码
2013/01/09 Javascript
基于JavaScript实现继承机制之构造函数+原型链混合方式的使用详解
2013/05/07 Javascript
基于MVC3方式实现下拉列表联动(JQuery)
2013/09/02 Javascript
纯JS实现动态时间显示代码
2014/02/08 Javascript
JS代码实现table数据分页效果
2016/05/26 Javascript
javascript数字验证的实例代码(推荐)
2016/08/20 Javascript
jQuery图片轮播(二)利用构造函数和原型创建对象以实现继承
2016/12/06 Javascript
关于vue.js发布后路径引用的问题解决
2017/08/15 Javascript
微信小程序报错:this.setData is not a function的解决办法
2017/09/27 Javascript
基于VUE移动音乐WEBAPP跨域请求失败的解决方法
2018/01/16 Javascript
利用JS实现一个同Excel表现的智能填充算法
2018/08/13 Javascript
jQuery实现放大镜案例
2020/10/19 jQuery
微信小程序:报错(in promise) MiniProgramError
2020/10/30 Javascript
一篇文章看懂JavaScript中的回调
2021/01/05 Javascript
Python实现爬取知乎神回复简单爬虫代码分享
2015/01/04 Python
python多进程共享变量
2016/04/06 Python
Python中的取模运算方法
2018/11/10 Python
解决python xx.py文件点击完之后一闪而过的问题
2019/06/24 Python
Python函数的定义方式与函数参数问题实例分析
2019/12/26 Python
pytorch 准备、训练和测试自己的图片数据的方法
2020/01/10 Python
Python抓包并解析json爬虫的完整实例代码
2020/11/03 Python
鱼油专家:Omegavia
2016/10/10 全球购物
师范学院毕业生求职信范文
2013/12/26 职场文书
信用社主任竞聘演讲稿
2014/05/23 职场文书
松材线虫病防治方案
2014/06/15 职场文书
司机岗位职责说明书
2014/07/29 职场文书
2015公务员年度考核评语
2015/03/25 职场文书
《我的美好婚事》动画化决定纪念插画与先导PV公开
2022/04/06 日漫