python中random.choice()函数_python random.choice-程序员宅基地

技术标签: random  python  深度学习  其他  

1. random.choice(seq)函数

从非空序列中随机选取一个数据并返回,该序列可以是list、tuple、str、set。
举例:

import random
print(random.choice('choice')) 
结果:choice其中任意一个字母,可能是c也可能是h...

2. random.choices(population,weights=None,*,cum_weights=None,k=1)函数

  1. population:集合
  2. weights:相对权重
  3. cum_weights:累加权重
  4. k:选取次数

作用:从集合中随机选取k次数据,返回一个列表,可以设置权重
**注意:**每次选取都不会影响原序列,每一次选取都是基于原序列。从population中进行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](固定结果)

结论:

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

3. random sample()

从population中无放回取样,一次取k个,返回一个k长的列表

random.sample
import random

_list = [n for n in range(1000)]
x = random.sample(_list, k=100)
print(len(set(x)) == len(x))
#输出结果为:True

4. 总结

  1. choice(seq): 从seq序列中(可以是列表,元组,字符串)随机取一个元素返回

  2. choices(population, weights=None, *, cum_weights=None, k=1):从population中进行K次有放回随机选取,每次选取一个元素(注意会出现同一个元素多次被选中的情况),weights是相对权重值,population中有几个元素就要有相对应的weights值,cum_weights是累加权重值,例如,相对权重〔10, 5, 30,5〕相当于累积权重〔10, 15, 45,50〕。在内部,在进行选择之前,相对权重被转换为累积权重,因此提供累积权重节省了工作。返回一个列表。

  3. sample(population, k):从population中无放回取样,一次取k个,返回一个k长的列表。可以像这样使用sample(range(10000000), k=60)

5. 相关链接

Python: random模块的随即取样函数:choice(),choices(),sample()
Python学习:random模块下的choices()函数详解

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/flyingluohaipeng/article/details/127971048

智能推荐

arduino使用oled代码_Arduino提高篇25—手势识别-程序员宅基地

文章浏览阅读457次。关注、星标公众号,不错过精彩内容编辑:Tony来源:公众号TonyCode随着科技的发展,人机交互也发生了翻天覆地的变化,从最开始的手动控制,到后来的遥控,再到语音识别以及图像识别。一切都是为了解放人类,毕竟能吵吵就不会动手对不对,现在都懒得吵吵了,图像识别分析就好。本篇我们来介绍高大尚的手势识别,用手比划就能进行控制了。 1 APDS-9960模块介绍APDS-9960是一个体积非常小..._oled引脚定义arduino代码

websocket 1006错误码-程序员宅基地

文章浏览阅读1.5w次,点赞2次,收藏10次。连接被服务器关闭原因:客户端授权没验证通过或被踢出_websocket 1006

大数据智慧数字电商第二课 工程搭建和模块开发_hbase-shaded-server-程序员宅基地

文章浏览阅读276次。实时数仓第2天讲义学习目标能够掌握Canal高可用环境搭建能够编写Flink程序解析Kafka中的ProtoBuf能够搭建flink实时ETL项目开发环境能够针对etl的业务处理进行封装公共接口Canal HA模式配置服务器端HA模式配置canal是支持HA的,其实现机制也是依赖zookeeper来实现的,用到的特性有watcher和EPHEMERAL节点(和session生命周期绑定),与HDFS的HA类似。canal的ha分为两部分,canal server和canal clien_hbase-shaded-server

【Unity热更新】学会AssetsBundle打包、加载、卸载_unity assetsbundle-程序员宅基地

文章浏览阅读1.1k次,点赞18次,收藏18次。下是关于如何在 Unity 中选中物体、构建 AssetBundle、加载 AssetBundle 以及卸载 AssetBundle 的简要教程。_unity assetsbundle

android 各个版本对应的api等级_anhdroid api11和api12变化-程序员宅基地

文章浏览阅读1.5k次。表格:Marshmallow6.0 API23Code nameVersionAPI levelLollipop5.1API level 22Lollipop5.0API level 21KitKat4.4 - 4.4.4API level 19_anhdroid api11和api12变化

046 SQL注入二_struts 2 sql注入-程序员宅基地

文章浏览阅读2.7k次。文章目录一:读写文件二:宽字节注入与SQLi-labs实验三:cookie注入四:base64注入五:http头部注入六:Referer注入一:读写文件我们也可以利用SQL注入漏洞读写文件,但是读写文件需要一定的条件。前提条件:1:secure-file-priv可以在phpmyadmin中的导航栏的变量选项中看到该变量。该参数在高版本的mysql数据库中限制了文件的导入导出操作,该参数可以写在my.ini配置文件中[mysqld]下。路径:D:\phpStudy\MySQL\my.ini若_struts 2 sql注入

随便推点

在Caffe中调用TensorRT提供的MNIST model_"#include \"mnist_model.hpp"-程序员宅基地

文章浏览阅读2.5k次。在Caffe中调用TensorRT提供的MNIST model_"#include \"mnist_model.hpp"

angular跳转指定页面_angularjs项目的页面跳转如何实现(5种方法)-程序员宅基地

文章浏览阅读4.3k次。Angular页面传参有多种办法,根据不同用例,我举5种最常见的:1. 基于ui-router的页面跳转传参(1) 在AngularJS的app.js中用ui-router定义路由,比如现在有两个页面,一个页面(producers.html)放置了多个producers,点击其中一个目标,页面跳转到对应的producer页,同时将producerId这个参数传过去。.state('producer..._angular跳转页面

PHP中的php.ini文件详解-程序员宅基地

文章浏览阅读352次。2019独角兽企业重金招聘Python工程师标准>>> ..._php.ini详解

openGl 入门(一)_opengl入门-程序员宅基地

文章浏览阅读2.4k次。以问答的形式记录openGl 知识点_opengl入门

Mybatis错误:Result Maps collection already contains value for ***_result maps connection already-程序员宅基地

文章浏览阅读5.8w次,点赞35次,收藏22次。使用mybatis时,服务器启动时出错错误重现严重: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListenerorg.springframework.beans.factory.Uns_result maps connection already

第一次开博客,留个纪念-程序员宅基地

文章浏览阅读217次。为了学习安卓,在CSDN这开博客,记录我的学习笔记,学习内容,学习感悟,加油

推荐文章

热门文章

相关标签