当前位置: 首页 > news >正文

【Python的随机数汇总】

​我们写python代码的时候,很少能用得上随机数,但是随机数有很多妙用。例如,在我们做测试数据集的时候,可以构建一个随机的dataframe;
或者在保存数据的时候,可以在每条数据前插入一列作为,不重复的ID 字段使用,为作为文件或数据块生成一个唯一的“指纹”,用于快速识别或索引。可以根据需求来设置自己的数据“指纹”!

以下是一些使用随机数的汇总:

1、random模块的随机函数

random.random():
返回一个[0, 1)范围内的随机浮点数。

random.uniform(a, b):
返回一个指定范围内的随机浮点数,范围为[a, b]

random.randint(a, b): 返回一个随机整数N,使得a <= N <=b
random.randrange(start, stop, step):
从指定范围内按指定基数递增的元素中随机选择一个,类似于range函数。step 是步长,要求整数;当范围很大时,生成随机数可能会比较慢。
random.choice(seq): 从非空序列x中随机选择一个元素
random.shuffle(): 用于将序列x中的元素随机打乱。
random.sample(population, k): 从总体population中随机抽取k个元素,要求k <=len(population)。

以下是代码运行的部分:

import randomprint(random.random()) #0.9478274870593494
print(random.uniform(4, 5)) #4.056551367726809
print(random.randint(6,10)) #6
print(random.randrange(1, 10, 2)) #5print('随机选择 100 以内一个偶数:',random.randrange(0, 101, 2))
#随机选择 1 到 100 之间的一个偶数
print('随机选择 100 以内的一个奇数:',random.randrange(1, 101, 2))print(random.choice([1,5,4,8,7,14])#从列表中抽一个数出来'''random.shuffle() 打乱列表'''my_list = [1, 2, 3, 4, 5]
random.shuffle(my_list)
print(my_list)  # 输出可能是 [1, 5, 3, 4, 2],每次输出可能不同#random.shuffle 不会返回新的序列,而是就地修改传入的序列。
#由于 random.shuffle 修改的是原序列,如果需要保留原始序列,应该先复制一份序列,然后再进行打乱操作。'''从列表中随机选择 2 个不重复的元素'''
items = ['Number1', 'Number2', 'Number3', 'Number4', 'Number5']
sample = random.sample(items, 2)
print(sample) 
#['Number5', 'Number4']

2. 生成随机编码/字符串

用途:可以用来生成不重复的随机id,方便做数据库的管理

  1. md5加密的各种函数
    MD5是一种广泛使用的哈希函数,它可以产生一个128位(16字节)的哈希值,通常用一个32位的十六进制字符串表示。

可以使用的场景:
A .生成数据唯一的id(重复率低,比随机字符串靠谱)
B .MD5 用来做存储用户密码的哈希值
C .一些网站的连接的加密方式是:SSL/TLS通过使用非对称的 MD5加密来建立一个安全的连接,随后使用对称加密来加密数据,从而保护数据在客户端和服务器之间传输过程中的隐私和完整性。因此,有时候在获取网站的request的时候,在header/data,甚至是网址的构建的时候也会用到

import hashlib #导入hash库函数def hash_UTF8(text): #基于UTF-8生成的md5加密'''ASCII编码:一个字节一共可以用来表示256种不同的状态         UTF-8是Unicode的实现方式之一 ,对应的编码是 \u9996\  这种UTF8的BOM头为 0xEF 0xBB 0xBFUnicode大端模式为 0xFE 0xFFUnicode小端模式为 0xFF 0xFE'''md5_result= hashlib.md5(text.encode(encoding='UTF-8')).hexdigest()return md5_resultprint(hash_UTF8('虚拟机柯尼卡')) #0c9a8ebe776ce41b1017e613a2d980cf def hash_GBK(text):#基于GBK生成的md5加密''' GBK编码,是对GB2312编码的扩展,因此完全兼容GB2312-80标准 兼容汉字、图形等的编码 '''md5_result= hashlib.md5(text.encode(encoding='GBK')).hexdigest()return md5_result
print(hash_GBK('虚拟机柯尼卡」 Ⅷ Ⅸ 『 』 〖 〗 【 】 £ ‰ § № ☆ ★  △ ▲ ※ → ← ↑')) #70ad1b56a830a421d1740e37e6ebfe90def hash_GB2312(text): #基于GB2312生成的md5加密 汉字编码标准'''非ASCII编码 基于区位码 的汉字编码标准,一般编码方式是:0xA0+区号,0xA0+位号。 '''md5_result= hashlib.md5(text.encode(encoding='GB2312')).hexdigest()return md5_resultprint(hash_GB2312('0xB0 0xB2'))  #6ef23e84a2a6d9af087fc6f38425930cdef hash_GB18030(text):#基于GB18030生成的md5加密 ''' GB18030是对GB2312的扩展,其编码长度由2个字节变为1~4个字节 '''md5_result= hashlib.md5(text.encode(encoding='GB18030')).hexdigest()return md5_resultprint(hash_GB18030('∈(0142)')) #b79d04b89ebe2b4e7767388ba3b7d71f
  1. 基于UUID编码生成随机数
import uuid                       #通用唯一识别码def UUID_time():'''基于时间戳 '''return uuid.uuid1()
print(UUID_time()) #0fe9a715-f58b-11ee-92df-244bfe9a3ddddef uuid3(text):'''uuid3() 基于名字和MD5散列值,保证了同一命名空间中不同名字的唯一性 '''return uuid.uuid3(uuid.NAMESPACE_DNS,text)
print(uuid3('木卡姆0xBB'))  #e7860c98-4ef8-30de-8adc-eebce41612a0  def uuid4():'''基于随机数,会重复。不常用 '''return  uuid.uuid4()
print(uuid4()) #6467f0d7-1f49-4963-9a57-c6dfee8d2713
#重复概率:2的128次方 分之一,概率也很小def uuid5(text):'''基于名字和SAHI值,使用SAHI算法 若有名字的唯一性要求,最好使用uuid3()或者uuid5()'''return uuid.uuid5(uuid.NAMESPACE_OID,text)
  1. 生成随机字符串
import random
import stringdef randN(N):'''生成长度为 N的以串随机数 '''min = pow(10, N - 1)max = pow(10, N)return random.randint(min, max - 1)print( randN(5))#最后的结果是:“49846” ,数值是随机的,可以生成目标长度的数字。def generate_random_string(length):'''生成32位的随机字符串,字母和数字都可以 '''characters = string.ascii_letters + string.digitsreturn ''.join(random.choice(characters) for _ in range(length))

这些方法可以单独使用,也可以组合使用,以满足不同的随机性需求。例如,如果你需要生成一个随机的密码,你可以结合使用random.randint和random.choice来生成一个包含数字和字母的字符串。

3.随机生成dataframe

import numpy as np
import random
new=np.random.randint(0,100, size=[10,10])#从100个数内选出10列10行的随机数,但是会重复
new=np.random.choice(100, size=[10,10], replace=False)#从100个数内选出10列10行的随机数,不会重复
print(new) 

4. 随机生成队列

def No_Repeat_Queue(N,start,end): '''生成从start-end的不重复队列,数字长度为N个数,最后返回的是集合,用{}表示 '''random_numbers = set()while len(random_numbers) < N:number = random.randint(start, end)random_numbers.add(number)return  random_numbers   
print(No_Repeat_Queue(10,-1,25))

5. 随机生成列表

如果是想生成顺序乱的数组,可以使用random.sample()生成不重复的列表:

def No_Repeat_numbers(N,start,end):'''生成长度为N,从start-end 中选出的 列表 '''No_Repeat_num= random.sample(range(start, end), N)return No_Repeat_num
print(No_Repeat_numbers(10,1,101))
#选出从1-101的十个数
结果:[7, 16, 47, 4, 19, 18, 25, 62, 61, 58]

相关文章:

【Python的随机数汇总】

​我们写python代码的时候&#xff0c;很少能用得上随机数&#xff0c;但是随机数有很多妙用。例如&#xff0c;在我们做测试数据集的时候&#xff0c;可以构建一个随机的dataframe&#xff1b; 或者在保存数据的时候&#xff0c;可以在每条数据前插入一列作为&#xff0c;不重…...

[状态压缩 广搜BFS]Saving Tang Monk

描述 《Journey to the West》(also 《Monkey》) is one of the Four Great Classical Novels of Chinese literature. It was written by Wu Chengen during the Ming Dynasty. In this novel, Monkey King Sun Wukong, pig Zhu Bajie and Sha Wujing, escorted Tang Monk to…...

Flutter 实现软鼠标

文章目录 前言一、如何实现&#xff1f;1、记录鼠标偏移2、MouseRegion获取偏移3、Transform移动图标 二、完整代码三、使用示例总结 前言 flutter在嵌入式系统中运行时&#xff0c;有可能遇到drm鼠标无法使用的情况&#xff0c;但鼠标事件却可以正常接收&#xff0c;此时如果…...

使用 MLRun 和 MinIO 设置开发机器

MLOps 之于机器学习&#xff0c;就像 DevOps 之于传统软件开发一样。两者都是一组旨在改善工程团队&#xff08;开发或 ML&#xff09;和 IT 运营 &#xff08;Ops&#xff09; 团队之间协作的实践和原则。目标是使用自动化来简化开发生命周期&#xff0c;从规划和开发到部署和…...

资质申请表详解:填写《建筑幕墙工程设计专项资质申请表》的要点

填写《建筑幕墙工程设计专项资质申请表》的要点如下&#xff0c;按照清晰、分点表示和归纳的方式整理&#xff0c;并参考了文章中的相关数字和信息&#xff1a; 一、封面 申报企业名称&#xff1a;按照工商营业执照内容填写全称&#xff0c;并加盖企业公章。填报日期&#xf…...

华为手机怎么找回删除的照片?掌握3个方法,恢复不是梦

由于误删、设备故障、软件更新等原因&#xff0c;我们有时可能会不慎丢失这些宝贵的照片。当面对空空如也的相册时&#xff0c;那种失落感无法言喻。华为手机该怎么找回删除的照片呢&#xff1f;但是&#xff0c;请不要绝望&#xff01;在科技的帮助下&#xff0c;我们可以采取…...

数据结构试题 20-21

真需要就死记吧 二叉树遍历-先序(非递归)【图解代码】_哔哩哔哩_bilibili 解释一下步骤&#xff1a; 一个循环为&#xff1a; 1.取节点 2.放右子树 3.放左子树 每次循环&#xff0c;都要从栈里取出一个节点 先放右子树&#xff0c;再放左子树 那这道题就是&#xff0c;先放1&am…...

vscode插件开发之 - TestController

TesController概要介绍 TestController 组件是用于实现自定义测试框架和集成测试结果的。它允许开发者定义自己的测试运行器&#xff0c;以支持在VSCode中运行和展示测试。以下是一些使用 TestController 组件的主要场景&#xff1a; 自定义测试框架&#xff1a;如果你正在开发…...

QBitArray使用详解

QBitArray使用详解 一、创建和初始化 QBitArray1.1 QBitArray默认构造1.2 QBitArray指定大小的构造1.3 QBitArray指定大小和初始值的构造 二、设置和访问位2.1 QBitArray设置单个位2.2 QBitArray访问单个位2.3 QBitArray使用下标操作符 三、设置所有位3.1 QBitArray将所有位设置…...

基于Python的自然语言处理项目 ChatTTS 推荐

**项目名称&#xff1a;ChatTTS**  ChatTTS是一个基于Python的自然语言处理项目&#xff0c;旨在实现一个简单的文本到语音转换系统。它使用深度学习技术&#xff0c;通过自然语言处理和语音合成算法&#xff0c;将文本转换为语音输出。  **项目介绍**&#xff1a;  Chat…...

论 To B 产品:从概念到市场实践

本文作者为 360 奇舞团产品经理 论 To B 产品&#xff1a;从概念到市场实践 To B 产品在商业世界中扮演着至关重要的角色。相较于面向消费者的To C市场&#xff0c;To B市场更专注于为其他企业提供产品和服务。理解和成功运营To B产品需要对其特定的市场需求和运作方式有深刻的…...

如何通过自定义模块DIY出专属个性化的CSDN主页?一招教你搞定!

个人主页&#xff1a;学习前端的小z 个人专栏&#xff1a;HTML5和CSS3悦读 本专栏旨在分享记录每日学习的前端知识和学习笔记的归纳总结&#xff0c;欢迎大家在评论区交流讨论&#xff01; 文章目录 &#x1f4af;如何通过HTMLCSS自定义模板diy出自己的个性化csdn主页&#x…...

[BSidesCF 2020]Had a bad day1

看到页面有两个按钮 先随便点一个试一下&#xff0c;当我们点击之后发现url是有变动的 感觉url是有点东西的&#xff0c;可能是某种注入&#xff0c;先尝试一下sql注入&#xff0c;发现给出了报错 通过报错我们可以确定是文件包含漏洞&#xff0c;那我们试试php伪协议去读取一下…...

从媒体网站的频道划分看媒体邀约的分类?

传媒如春雨&#xff0c;润物细无声&#xff0c;大家好&#xff0c;我是51媒体网胡老师。 媒体宣传加速季&#xff0c;100万补贴享不停&#xff0c;一手媒体资源&#xff0c;全国100城线下落地执行。详情请联系胡老师。 在我们举行活动的时候&#xff0c;通常会邀请媒体到现场来…...

Day40

Day40 监听器 概念&#xff1a; 监听器用于监听web应用中某些对象信息的创建、销毁、增加&#xff0c;修改&#xff0c;删除等动作的 发生&#xff0c;然后作出相应的响应处理。当范围对象的状态发生变化的时候&#xff0c;服务器自动调用 监听器对象中的方法。 常用于统计在线…...

linux基础 - 内核的基础概念

目录 零. 前言 一. 源码简介 二. 存储管理 物理内存管理&#xff1a; 虚拟内存管理&#xff1a; 内存分配与回收&#xff1a; 三. CPU 和进程管理 进程管理&#xff1a; CPU 管理&#xff1a; 四. 文件系统 文件系统的概念 常见的 Linux 文件系统类型 文件系统的工…...

centos7系统使用docker-compose安装部署jenkins

CentOS7系统使用docker-compose安装部署jenkins&#xff0c;并实现前后端自动构建 记录一次工作中部署jenkins的真实经历&#xff0c;总结了相关经验 1.准备环境 1.java 由于最新的jenkins需要jdk11以上才能支持&#xff0c;而系统里的jdk是1.8的&#xff0c;因此等jenkins安…...

传染病报卡内容——丙型

--丙型 select a.morbiditdate 发病日期, diagnosedate 诊断日期, a.deathdate 死亡日期, a.casetypequality 病例分类,a.hcvrna "HCR_RNA定量" from zl_sdmb.t_报卡记录 t, c1_infectiousv1_6 a where t.id a.fileid and t.卡片种类 传…...

本地快速部署大语言模型开发平台Dify并实现远程访问保姆级教程

文章目录 前言1. Docker部署Dify2. 本地访问Dify3. Ubuntu安装Cpolar4. 配置公网地址5. 远程访问6. 固定Cpolar公网地址7. 固定地址访问 前言 本文主要介绍如何在Linux Ubuntu系统使用Docker快速部署大语言模型应用开发平台Dify,并结合cpolar内网穿透工具实现公网环境远程访问…...

《Cloud Native Data Center Networking》(云原生数据中心网络设计)读书笔记 -- 02 Clos拓扑

本章回答以下问题&#xff1a; 什么是 Clos 拓扑&#xff0c;它与“接入 - 汇聚 - 核心”拓扑有何不同?Clos 拓扑的特征是什么?Clos 拓扑对数据中心网络的影响是什么? Clos拓扑 云原生数据中心基础设施的先行者们想要构建一种支持大规模水平扩展网络。 基本的Clos拓扑如图…...

linux之kylin系统nginx的安装

一、nginx的作用 1.可做高性能的web服务器 直接处理静态资源&#xff08;HTML/CSS/图片等&#xff09;&#xff0c;响应速度远超传统服务器类似apache支持高并发连接 2.反向代理服务器 隐藏后端服务器IP地址&#xff0c;提高安全性 3.负载均衡服务器 支持多种策略分发流量…...

Linux 文件类型,目录与路径,文件与目录管理

文件类型 后面的字符表示文件类型标志 普通文件&#xff1a;-&#xff08;纯文本文件&#xff0c;二进制文件&#xff0c;数据格式文件&#xff09; 如文本文件、图片、程序文件等。 目录文件&#xff1a;d&#xff08;directory&#xff09; 用来存放其他文件或子目录。 设备…...

Cinnamon修改面板小工具图标

Cinnamon开始菜单-CSDN博客 设置模块都是做好的&#xff0c;比GNOME简单得多&#xff01; 在 applet.js 里增加 const Settings imports.ui.settings;this.settings new Settings.AppletSettings(this, HTYMenusonichy, instance_id); this.settings.bind(menu-icon, menu…...

Python爬虫(一):爬虫伪装

一、网站防爬机制概述 在当今互联网环境中&#xff0c;具有一定规模或盈利性质的网站几乎都实施了各种防爬措施。这些措施主要分为两大类&#xff1a; 身份验证机制&#xff1a;直接将未经授权的爬虫阻挡在外反爬技术体系&#xff1a;通过各种技术手段增加爬虫获取数据的难度…...

uniapp微信小程序视频实时流+pc端预览方案

方案类型技术实现是否免费优点缺点适用场景延迟范围开发复杂度​WebSocket图片帧​定时拍照Base64传输✅ 完全免费无需服务器 纯前端实现高延迟高流量 帧率极低个人demo测试 超低频监控500ms-2s⭐⭐​RTMP推流​TRTC/即构SDK推流❌ 付费方案 &#xff08;部分有免费额度&#x…...

涂鸦T5AI手搓语音、emoji、otto机器人从入门到实战

“&#x1f916;手搓TuyaAI语音指令 &#x1f60d;秒变表情包大师&#xff0c;让萌系Otto机器人&#x1f525;玩出智能新花样&#xff01;开整&#xff01;” &#x1f916; Otto机器人 → 直接点明主体 手搓TuyaAI语音 → 强调 自主编程/自定义 语音控制&#xff08;TuyaAI…...

在鸿蒙HarmonyOS 5中使用DevEco Studio实现录音机应用

1. 项目配置与权限设置 1.1 配置module.json5 {"module": {"requestPermissions": [{"name": "ohos.permission.MICROPHONE","reason": "录音需要麦克风权限"},{"name": "ohos.permission.WRITE…...

RSS 2025|从说明书学习复杂机器人操作任务:NUS邵林团队提出全新机器人装配技能学习框架Manual2Skill

视觉语言模型&#xff08;Vision-Language Models, VLMs&#xff09;&#xff0c;为真实环境中的机器人操作任务提供了极具潜力的解决方案。 尽管 VLMs 取得了显著进展&#xff0c;机器人仍难以胜任复杂的长时程任务&#xff08;如家具装配&#xff09;&#xff0c;主要受限于人…...

【MATLAB代码】基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),附源代码|订阅专栏后可直接查看

文章所述的代码实现了基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),针对传感器观测数据中存在的脉冲型异常噪声问题,通过非线性加权机制提升滤波器的抗干扰能力。代码通过对比传统KF与MCC-KF在含异常值场景下的表现,验证了后者在状态估计鲁棒性方面的显著优…...

django blank 与 null的区别

1.blank blank控制表单验证时是否允许字段为空 2.null null控制数据库层面是否为空 但是&#xff0c;要注意以下几点&#xff1a; Django的表单验证与null无关&#xff1a;null参数控制的是数据库层面字段是否可以为NULL&#xff0c;而blank参数控制的是Django表单验证时字…...