random随机数
random随机数
1.概述
random用来生成一些随机数,下面介绍random模块提供的方法根据需求生成不同的随机数。
2.random常用操作
2.1.random默认随机数
random()函数返回一个随机的浮点值,默认返回值范围在0 <= n < 1.0区间
import randomfor i in range(5):print('%04.3f' % random.random(), end=' ')
print()
运行结果
0.481 0.369 0.876 0.659 0.124
2.2.指定范围随机数
生成一个指定数值区间内的数,则要用uniform()
import randomfor i in range(5):print('{:04.3f}'.format(random.uniform(1, 100)), end=' ')
print()
运行结果
68.240 10.768 30.234 80.859 91.582
randrange()是从区间选择值的方式,可以指定开始值,结束值,步长。
randrange更高效,因为它并没有真正构造区间。
import randomfor i in range(3):print(random.randrange(0, 101, 5), end=' ')
print()
运行结果
90 15 50
2.3.指定种子
如果需要重复使用相同值的随机序列,random提供了seed函数,他可以生成一个期望的值集。seed参数可以使任意可散列对象。
例如第一次运行random生成了一系列的随机值,第二次运行希望使用第一次生成的值,通过设置相同的seed值,即可保持随机的值不变。
import randomrandom.seed(1)for i in range(5):print('{:04.3f}'.format(random.random()), end=' ')
print()
重复运行上面的代码,只要不改变seed值,它生成的随机值是一样的。
# 第一次运行
0.134 0.847 0.764 0.255 0.495
#第二次运行
0.134 0.847 0.764 0.255 0.495
2.4.随机整数
random将生成浮点数,可以把结果转换为整数,不过直接使用randint生成整数会更方便。
import randomprint('[1, 100]:', end=' ')for i in range(3):print(random.randint(1, 100), end=' ')print('\n[-5, 5]:', end=' ')
for i in range(3):print(random.randint(-5, 5), end=' ')
print()
运行代码,返回整数随机值
[1, 100]: 4 50 56
[-5, 5]: 4 -5 2
2.5.随机选择元素
random包含一个choice()函数,可以从随机序列中随机选择值。下面模拟一个抛硬币10 000次统计面朝上和面朝下次数。
import randomoutcomes = {'heads': 0,'tails': 0,
}
sides = list(outcomes.keys())for i in range(10000):outcomes[random.choice(sides)] += 1print('Heads:', outcomes['heads'])
print('Tails:', outcomes['tails'])
运行结果,统计了随机选择了硬币的次数。
Heads: 5055
Tails: 4945
2.6.排列
要模拟一个扑克牌游戏,需要把一副扑克牌混起来,然后发牌,同一张牌不能重复使用。可以用shuffle()洗牌,然后在发牌时删除所发的牌。
import random
import itertoolsFACE_CARDS = ('J', 'Q', 'K', 'A')
SUITS = ('H', 'D', 'C', 'S')def new_deck():return [# Always use 2 places for the value, so the strings# are a consistent width.'{:>2}{}'.format(*c)for c in itertools.product(itertools.chain(range(2, 11), FACE_CARDS),SUITS,)]def show_deck(deck):p_deck = deck[:]while p_deck:row = p_deck[:13]p_deck = p_deck[13:]for j in row:print(j, end=' ')print()# Make a new deck, with the cards in order
deck = new_deck()
print('Initial deck:')
show_deck(deck)# Shuffle the deck to randomize the order
random.shuffle(deck)
print('\nShuffled deck:')
show_deck(deck)# Deal 4 hands of 5 cards each
hands = [[], [], [], []]for i in range(5):for h in hands:h.append(deck.pop())# Show the hands
print('\nHands:')
for n, h in enumerate(hands):print('{}:'.format(n + 1), end=' ')for c in h:print(c, end=' ')print()# Show the remaining deck
print('\nRemaining deck:')
show_deck(deck)
2.7.不重复采样
有些时候生成的随机数可能会包含重复值,使用sample()函数可以从序列中随机取值保证值不重复。
from random import sample
data = [i for i in range(100)] # 列表推导式
result = sample(data, 10)
print(result)
运行上面的代码,sample从列表中随机取值,保证取到的值不重复
[86, 34, 56, 48, 21, 75, 79, 3, 57, 38]
2.8.并发生成随机数
random包括一个Random类,管理多个随机数状态,每个实例都可以单独使用互不干扰。
import random
import timeprint('Default initializiation:\n')r1 = random.Random()
r2 = random.Random()for i in range(3):print('{:04.3f} {:04.3f}'.format(r1.random(), r2.random()))print('\nSame seed:\n')seed = time.time()
r1 = random.Random(seed)
r2 = random.Random(seed)for i in range(3):print('{:04.3f} {:04.3f}'.format(r1.random(), r2.random()))
运行上面的代码,第二个使用了seed两个随机对象的值是相同的。
Default initializiation:0.666 0.946
0.080 0.385
0.315 0.768Same seed:0.112 0.112
0.657 0.657
0.064 0.064
2.9.系统随机
系统提供了一个随机数生成器,random通过SystemRandom类提供的功能,可以生成随机数。不过使用os.urandom()生成值,该值构成所有其他算法的基础。
SystemRandom产生的序列是不可再生的,来自于系统的随机性而不是软件状态,所以seed不再起作用。
import random
import timeprint('Default initializiation:\n')r1 = random.SystemRandom()
r2 = random.SystemRandom()for i in range(3):print('{:04.3f} {:04.3f}'.format(r1.random(), r2.random()))print('\nSame seed:\n')seed = time.time()
r1 = random.SystemRandom(seed)
r2 = random.SystemRandom(seed)for i in range(3):print('{:04.3f} {:04.3f}'.format(r1.random(), r2.random()))
运行代码,结果显示seed不再起作用。
Default initializiation:0.649 0.422
0.560 0.225
0.530 0.189Same seed:0.526 0.408
0.293 0.111
0.032 0.837
相关文章:
random随机数
random随机数 1.概述 random用来生成一些随机数,下面介绍random模块提供的方法根据需求生成不同的随机数。 2.random常用操作 2.1.random默认随机数 random()函数返回一个随机的浮点值,默认返回值范围在0 < n < 1.0区间 import randomfor i …...

【金三银四系列】Spring面试题-上(2023版)
Spring面试专题 1.Spring应该很熟悉吧?来介绍下你的Spring的理解 有些同学可能会抢答,不熟悉!!! 好了,不开玩笑,面对这个问题我们应该怎么来回答呢?我们给大家梳理这个几个维度来回答 1.1 Spring的发展历程 先介绍…...

linux基本功系列之tar命令实战
文章目录前言一. tar命令介绍二. 语法格式及常用选项三. 参考案例3.1 仅打包不压缩3.2 打包后使用调用压缩命令进行压缩3.3 列出文件的内容3.4 追加文件到tar命令中3.5 释放文件到指定的目录四 . 各种压缩方式的比较总结前言 大家好,又见面了,我是沐风晓…...

Prometheus服务发现
Prometheus服务发现介绍 Prometheus默认是采用pull的方式拉取监控数据的,每一个被抓取的目标都要暴露一个HTTP接口,prometheus通过这个接口来获取相应的指标数据,这种方式需要由prometheus-server决定采集的目标服务器有哪些,通过…...

【Spring6源码・MVC】请求处理流程源码解析
上一篇《【Spring6源码・MVC】初始化registry,完成url和controller的映射关系》我们知道,在IOC容器加载的同时,初始化了registry这个HashMap,这个HashMap中存放了请求路径和对应的方法。当我们请求进来,会通过这个regi…...
elasticsearch term match 查询
1. 准备数据 PUT h1/doc/1 {"name": "rose","gender": "female","age": 18,"tags": ["白", "漂亮", "高"] }PUT h1/doc/2 {"name": "lila","gender&quo…...

canal使用说明:MySQL、Redis实时数据同步
1. canal简介 canal是阿里开源的数据同步工具,基于bin log可以将数据库同步到其他各类数据库中,目标数据库支持mysql,postgresql,oracle,redis,MQ,ES等 canal分成服务端deployer和客户端adapter,我们可以部署多个,同时为了方便管…...

计算机视觉框架OpenMMLab开源学习(三):图像分类实战
前言:本篇主要偏向图像分类实战部分,使用MMclassification工具进行代码应用,最后对水果分类进行实战演示,本次环境和代码配置部分省略,具体内容建议参考前一篇文章:计算机视觉框架OpenMMLab开源学习&#x…...

awk命令
一.介绍 awk是专门为文本处理设计的编程语言,是一门数据驱动的编程语言。与sed类似,都是以数据驱动的行处理软件,主要用于数据扫描,过滤和汇总。数据可以来自于标准输入,管道或者文件。 二.语法 awk是一种处理文本文件…...
LocalDateTime获取时间的年、月、日、时、分、秒、纳秒
如何把String/Date转成LocalDateTime参考String、Date与LocalDate、LocalTime、LocalDateTime之间互转 String、Date、LocalDateTime、Calendar与时间戳之间互相转化参考String、Date、LocalDateTime、Calendar与时间戳之间互相转化 方法介绍 getYear() 获取日期的年 getMon…...

MoveIT Rviz和Gazebo联合仿真
文章目录环境安装概述ros_control框架ros_control数据流文件配置附加工具故障问题解决参考接前两篇:ROS MoveIT1(Noetic)安装总结 Solidworks导出为URDF用于MoveIT总结(带prismatic) MoveIT1 Assistant 总结 环境 Ubu…...
ESP32S2(12K)-DS18B20数码管显示温度
一、物料清单: NODEMCU-32-S2 (ESP32-12K)四段数码管(共阴)DS18B20(VCC/DQ/GND)Arduino-IDE 2.0.3二、实现方法及效果图: 2.1 引用库 // #include <OneWire.h> //可以不引入,因为DallasTemperature.h中已经引入了OneWire.h #include <DallasTemperature.h>#…...
linux栈溢出定位
一、编译选项定位堆栈溢出 来源:堆栈溢出检测机制 - SkrSky - 博客园 1、栈溢出可能打印 unhandled level 1 translation fault (11) at 0x7f8d0347, esr 0x92000005 2、栈溢出保护机制 gcc提供了栈保护机制stack-protector(编译选项-fstack-protec…...

CSS基础:选择器和声明样式
CSS概念 CSS(Cascading Style Sheets)层叠样式表,又叫级联样式表,简称样式表 CSS用于HTML文档中元素样式的定义 使用css让网页具有美观一致的页面 语法 CSS 规则由两个主要的部分构成:选择器和声明样式 选择器通常…...

VS中安装gismo库
文章目录前言一、下载安装paraview直接下载压缩包安装就可以了解压后按步骤安装即可二、gismo库的安装gismo库网址第一种方法:第二种方法第三种方法:用Cmake软件直接安装首先下载cmake软件[网址](https://cmake.org/download/)安装gismo库三、gismo库的使…...

元学习方法解决CDFSL以及两篇SOTA论文讲解
来源:投稿 作者:橡皮 编辑:学姐 带你学习跨域小样本系列1-简介篇 跨域小样本系列2-常用数据集与任务设定详解 跨域小样本系列3:元学习方法解决CDFSL以及两篇SOTA论文讲解(本篇) 跨域小样本系列4…...

大数据之------------数据中台
一、什么是数据中台 **数据中台是指通过数据技术,对海量数据进行采集、计算、存储、加工,同时统一标准和口径。**数据中台的目标是让数据持续用起来,通过数据中台提供的工具、方法和运行机制,把数据变为一种服务能力,…...
Python 中 字符串是什么?
字符串是 Python 中最常用的数据类型。我们可以使用引号 ( ’ 或 " ) 来创建字符串。 创建字符串很简单,只要为变量分配一个值即可。例如: var1 ‘Hello World!’ var2 “Python Runoob” Python 访问字符串中的值 Python 不支持单字符类型&…...
OJ刷题Day1 · 一维数组的动态和 · 将数字变成 0 的操作次数 · 最富有的客户资产总量 · Fizz Buzz · 链表的中间结点 · 赎金信
一、一维数组的动态和二、将数字变成 0 的操作次数三、最富有的客户资产总量四、Fizz Buzz五、链表的中间结点六、赎金信一、一维数组的动态和 给你一个数组 nums 。数组「动态和」的计算公式为:runningSum[i] sum(nums[0]…nums[i]) 。 请返回 nums 的动态和。 示…...
【数据结构】栈——必做题
逆波兰表达式后缀表达式的出现是为了方便计算机处理,它的运算符是按照一定的顺序出现,所以求值过程中并不需要使用括号来指定运算顺序,也不需要考虑运算符号(比如加减乘除)的优先级。先介绍中简单的人工转化方法&#…...
KubeSphere 容器平台高可用:环境搭建与可视化操作指南
Linux_k8s篇 欢迎来到Linux的世界,看笔记好好学多敲多打,每个人都是大神! 题目:KubeSphere 容器平台高可用:环境搭建与可视化操作指南 版本号: 1.0,0 作者: 老王要学习 日期: 2025.06.05 适用环境: Ubuntu22 文档说…...

国防科技大学计算机基础课程笔记02信息编码
1.机内码和国标码 国标码就是我们非常熟悉的这个GB2312,但是因为都是16进制,因此这个了16进制的数据既可以翻译成为这个机器码,也可以翻译成为这个国标码,所以这个时候很容易会出现这个歧义的情况; 因此,我们的这个国…...
谷歌浏览器插件
项目中有时候会用到插件 sync-cookie-extension1.0.0:开发环境同步测试 cookie 至 localhost,便于本地请求服务携带 cookie 参考地址:https://juejin.cn/post/7139354571712757767 里面有源码下载下来,加在到扩展即可使用FeHelp…...
DeepSeek 赋能智慧能源:微电网优化调度的智能革新路径
目录 一、智慧能源微电网优化调度概述1.1 智慧能源微电网概念1.2 优化调度的重要性1.3 目前面临的挑战 二、DeepSeek 技术探秘2.1 DeepSeek 技术原理2.2 DeepSeek 独特优势2.3 DeepSeek 在 AI 领域地位 三、DeepSeek 在微电网优化调度中的应用剖析3.1 数据处理与分析3.2 预测与…...

循环冗余码校验CRC码 算法步骤+详细实例计算
通信过程:(白话解释) 我们将原始待发送的消息称为 M M M,依据发送接收消息双方约定的生成多项式 G ( x ) G(x) G(x)(意思就是 G ( x ) G(x) G(x) 是已知的)࿰…...

基于Flask实现的医疗保险欺诈识别监测模型
基于Flask实现的医疗保险欺诈识别监测模型 项目截图 项目简介 社会医疗保险是国家通过立法形式强制实施,由雇主和个人按一定比例缴纳保险费,建立社会医疗保险基金,支付雇员医疗费用的一种医疗保险制度, 它是促进社会文明和进步的…...
java调用dll出现unsatisfiedLinkError以及JNA和JNI的区别
UnsatisfiedLinkError 在对接硬件设备中,我们会遇到使用 java 调用 dll文件 的情况,此时大概率出现UnsatisfiedLinkError链接错误,原因可能有如下几种 类名错误包名错误方法名参数错误使用 JNI 协议调用,结果 dll 未实现 JNI 协…...

关于iview组件中使用 table , 绑定序号分页后序号从1开始的解决方案
问题描述:iview使用table 中type: "index",分页之后 ,索引还是从1开始,试过绑定后台返回数据的id, 这种方法可行,就是后台返回数据的每个页面id都不完全是按照从1开始的升序,因此百度了下,找到了…...
VTK如何让部分单位不可见
最近遇到一个需求,需要让一个vtkDataSet中的部分单元不可见,查阅了一些资料大概有以下几种方式 1.通过颜色映射表来进行,是最正规的做法 vtkNew<vtkLookupTable> lut; //值为0不显示,主要是最后一个参数,透明度…...

用docker来安装部署freeswitch记录
今天刚才测试一个callcenter的项目,所以尝试安装freeswitch 1、使用轩辕镜像 - 中国开发者首选的专业 Docker 镜像加速服务平台 编辑下面/etc/docker/daemon.json文件为 {"registry-mirrors": ["https://docker.xuanyuan.me"] }同时可以进入轩…...