random模块

random随机模块
代码实现的随机实际上都是伪随机,都是按照某种规则实现的随机,既然是按照某种规则,实际上就有迹可循,是一种伪随机
返回0-1之间的随机浮点数,左闭右开

print(random.random())

返回两个整数之间的随机整数,闭区间

print(random.randint(1, 5))  

random.choice(seq)返回一个列表,元组或字符串的随机项
从非空序列中随机选取一个数据并返回,该序列可以是list、tuple、str、set

ls = ('a', 'b', 'v', 'c', '10')
print(random.choice(ls))

2.random.choices(population,weights=None,*,cum_weights=None,k=1)函数
population:是指定的序列,可以是列表、元组、字符串等。
weights:相对权重。
cum_weights:累加权重。
k:选取次数。
作用:从指定的序列中随机选取k次数据,返回一个列表,可以设置权重。

注意:每次选取都不会影响原序列,每一次选取都是基于原序列。

举例:

import random
a = [1,2,3,4,5]
print(random.choices(a,k=6))

解析:重复6次从列表a中的各个成员中选取一个数输出,各个成员出现概率基本持平。
结果:[5, 4, 5, 4, 1, 3](随机生成的)

print(random.choices(a,weights=[0,0,1,0,0],k=6))

解析:重复6次从列表a中提取3,最终得到[3, 3, 3, 3, 3, 3]
结果:[3, 3, 3, 3, 3, 3](固定结果)

print(random.choices(a,weights=[1,1,1,1,1],k=6))

解析:重复6次从列表a中的各个成员中选取一个数输出,各个成员出现概率基本持平。
结果:[5, 4, 3, 5, 4, 3](随机生成的)

print(random.choices(a,cum_weights=[1,1,1,1,1],k=6))

结果:[1, 1, 1, 1, 1, 1](固定结果)
1
2
3
4
5
6
7
8
9
10
11
12
13
可以自己多输出几次看看规律。

结论:

参数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了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • random 模块 python 中用于生成伪随机数的模块 计算机中不存在真正意义上的随机,因为“随机”过程是由一...
    躺好别动阅读 5,017评论 0 3
  • 在日常生活中,随机数我们很多时候都会经常接触到,比如说游戏抽卡,随机到的数值就可以决定这波抽卡的结果是欧皇附体、正...
    Soothingday阅读 3,602评论 0 0
  • 如果你对在Python生成随机数与random模块中最常用的几个函数的关系与不懂之处,下面的文章就是对Python...
    Hobort阅读 5,414评论 0 1
  • 概述 该模块为多种分布实现伪随机数生成器。 对于整数,在某范围内均匀选择。 对于序列,对随机元素均匀选择,通过产生...
    hao555sky阅读 3,843评论 0 0
  • random 模块主要包含生成伪随机数的各种功能变量和函数。 在 Python 的交互式解释器中先导入 rando...
    帅帅滴小哥哥阅读 3,785评论 0 1

友情链接更多精彩内容