random模块下的方法详解:


1.random.random()

  • 随机生成一个[0,1)之间的浮点数

2.random.randint(a,b)

  • 随机生成[a,b]范围内一个整数

3.random.randrange(a,b,step)

  • 不指定step,随机生成[a,b)范围内一个整数。
  • 指定step,step作为步长会进一步限制[a,b)的范围,比如randrange(0,11,2)意即生成[0,11)范围内的随机偶数。
  • 不指定a,则默认从0开始。

4.random.uniform(a,b)

  • 产生[a,b]范围内一个随机浮点数

    uniform()的a,b参数不需要遵循a<=b的规则,即a小b大也可以,此时生成[b,a]范围内的随机浮点数。但如果上面的三个方法采用这种方式就会产生TypeError或者ValueEeeor错误。

5.random.choice(seq)

非空序列中随机选取一个数据并带回,该序列可以是list、tuple、str、set。
如果序列为空,则弹出IndexError错误。

import random
print(random.choice('biu')) #u

6.random.choices(population,weights=None,*,cum_weights=None,k=1)
Python3.6版本新增。

  • population:集群。
  • weights:相对权重。
  • cum_weights:累加权重。
  • k:选取次数。

作用:从集群中随机选取k次数据,返回一个列表,可以设置权重
注意每次选取都不会影响原序列,每一次选取都是基于原序列。

关于random.choices()函数我举几个例子:

import random
a = [1,2,3,4,5]
#1
print(random.choices(a,k=5))
#2
print(random.choices(a,weights=[0,0,1,0,0],k=5))
#3
print(random.choices(a,weights=[1,1,1,1,1],k=5))
#4
print(random.choices(a,cum_weights=[1,1,1,1,1],k=5))

对于 #1–#4 的每一条语句不妨各自写一个循环语句让它输出个十遍八遍的,你就足以看出用法了。
这里我只提出运行结果和结论:

#1 : 重复输出10次列表a中的各个成员出现概率基本持平。
#2 : 重复输出10次每次输出均得到[3,3,3,3,3]结果。
#3 : 重复输出10次列表a中的各个成员出现概率基本持平。
#4 : 重复输出10次每次输出均得到[1,1,1,1,1]结果。

结论:

参数weights设置相对权重,它的值是一个列表,设置之后,每一个成员被抽取到的概率就被确定了。
比如weights=[1,2,3,4,5],那么第一个成员的概率就是P=1/(1+2+3+4+5)=1/15。cum_weights设置累加权重,Python会自动把相对权重转换为累加权重,即如果你直接给出累加权重,那么就不需要
给出相对权重,且Python省略了一步执行。
比如weights=[1,2,3,4],那么cum_weights=[1,3,6,10]
这也就不难理解为什么cum_weights=[1,1,1,1,1]输出全是第一个成员1了。

7.random.sample(population,k)

从集群population中选取k个元素,返回一个列表,集群可以是list、tuple、str、set。

与random.choices()的区别:一个是选取k次,一个是选取k个,选取k次的相当于选取后又放回,选取k个则选取后不放回。故random.sample()的k值不能超出集群的元素个数。

import random
a = ['ahh','hhh','zzz','emm']
print(random.sample(a,3))
#['hhh', 'zzz', 'ahh']

8.random.shuffle(lst)

随机打乱序列lst的顺序并重新排序,注意它无返回值,另外lst只能是一个可变序列,且只支持有下标的序列,因此它也不适用于set,你最好只把它用在列表上。

9.random.seed(a=None,version=2)

设置随机种子的,如果不设置随机种子,则默认以系统时间作为随机种子。一般用不上。


10.另外random模块下的一些关于数学分布的方法就不整理学习了,像我这种菜渣暂时用不上。。。

这些方法都比较简单,用法也已说明,就不额外举例子了,抽时间随便练练手,很快就能掌握。

Python choices()函数详解、random模块下的常用函数相关推荐

  1. random模块下的常用函数Python choices()方法练习

    random int #random.randint 返回a和b之间的整数,包前不包后 a = 1 b = 10 import random random.randint(a,b) >>& ...

  2. 冒泡排序和qsort函数详解以及如何模拟实现qsort函数

    一.冒泡排序 冒泡排序是一种常见的排序方式,它可以把数组元素有序或无序的数组进行重新排序,并使得数组中的元素从大到小或从小到大进行排序(就像泡泡一样). 冒泡排序原理: 每次比较数组中的相邻的两个元素 ...

  3. linux内核中的hook函数详解,linux内核中的hook函数详解

    在编写linux内核中的网络模块时,用到了钩子函数也就是hook函数.现在来看看linux是如何实现hook函数的. 先介绍一个结构体: struct nf_hook_ops,这个结构体是实现钩子函数 ...

  4. Kotlin——高阶函数详解与标准的高阶函数使用

    一.高阶函数介绍 在介绍高阶函数之前,或许您先应该了解Kotlin中,基础函数的使用与定义.您可以参见Kotlin--初级篇(七):函数(方法)基础使用这边文章的用法. 在Kotlin中,高阶函数即指 ...

  5. re python 引擎_python 详解re模块

    正则表达式的元字符有. ^ $ * ? { [ ] | ( ) .表示任意字符 []用来匹配一个指定的字符类别,所谓的字符类别就是你想匹配的一个字符集,对于字符集中的字符可以理解成或的关系. ^ 如果 ...

  6. python内置函数详解总结篇_Python内置函数详解——总结篇

    数学运算(7个) 类型转换(24个) 序列操作(8个) 对象操作(7个) 反射操作(8个) 变量操作(2个) 交互操作(2个) 文件操作(1个) 编译执行(4个) 装饰器(3个) 数学运算 abs:求 ...

  7. python递归调用详解_Python递归调用自己的函数

    原博文 2019-11-16 10:36 − def fact(x): if x == 1: return 1 else: return x * fact(x-1) ... 0 191 相关推荐 20 ...

  8. python中getattr详解_Python中如何使用getattr()函数

    Python中如何使用getattr()函数 发布时间:2020-08-12 14:57:55 来源:亿速云 阅读:74 作者:小新 这篇文章将为大家详细讲解有关Python中如何使用getattr( ...

  9. python自定义函数详解_python基础教程之自定义函数介绍

    函数最重要的目的是方便我们重复使用相同的一段程序. 将一些操作隶属于一个函数,以后你想实现相同的操作的时候,只用调用函数名就可以,而不需要重复敲所有的语句. 函数的定义 首先,我们要定义一个函数, 以 ...

最新文章

  1. 分享一个C#使用AT指令控制语音猫的例子
  2. pythond的执行原理_python基础——继承实现的原理
  3. IT人员健康信号之颈椎病自疗
  4. win2003能装mysql_Windows2003系统安装mysql小结
  5. hadoop-1.1.2 在Windows环境下的部署
  6. python自启动 绕过360_记录一次绕过杀软的过程
  7. 不用开发实现RDS RDWeb门户美化和个性化
  8. 漫步数理统计十——连续随机变量(上)
  9. C++学习:第一章 开始
  10. AcWing 1270. 数列区间最大值(RMQ问题)
  11. java web打印 闪退_tomcat闪退解决方案
  12. 天线的布局、基本术语、种类、隔离度设计要求介绍
  13. java象棋人机_Java版中国象棋人机对战源代码(AI算法体现淋漓尽致)
  14. Ricequant-估值因子的分析
  15. 跑通SpringBoot + dubbo3.0.8 + zookeeper
  16. 2.Oracle数据库SQL开发之 SQL DEVELOPER使用
  17. 无人驾驶感知篇之融合(一)
  18. 求Geohash编码周围的8个编码
  19. Rust的前景怎么样?值不值的学—Rust对比、特色和理念
  20. windows CE初次接触(一次升级长安致尚XT高德导航的经历)

热门文章

  1. Vr (全景图实现)
  2. Alibaba微服务组件Nacos注册中心
  3. ewb文件用multisim打开_MULTISIM(EWB)电路仿真实例文件打包
  4. 海思SD3403/SS928V100开发(2)镜像烧录
  5. [互动抽奖]感谢大家的支持!!!
  6. 动手学深度学习之Task09:目标检测基础;图像风格迁移;图像分类案例1
  7. vlc for android 完全编译
  8. 一文了解微分段应用场景与实现机制
  9. Pendo for Mac是什么软件?Pendo笔记for Mac软件介绍
  10. 【Rust日报】2020-04-13 Ruma,Flutter RS,Valora,Rust SSH,mathbench