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

random模块篇

Python 的 random 模块是一个非常实用的工具,它提供了生成各种类型随机数的方法。无论是生成随机整数、浮点数,还是从序列中随机选择元素,random 模块都能满足你的需求。下面是一个详细的教程,介绍 random 模块的主要功能和用法。
导入模块

首先,你需要导入 random 模块才能使用它:


import random

生成随机整数

randint(a, b)

返回一个介于 a 和 b 之间(包括 a 和 b)的随机整数。


random_int = random.randint(1, 10)  print(random_int)  # 输出 1 到 10 之间的一个整数

randrange(start, stop[, step])

返回一个介于 start 和 stop 之间(不包括 stop)的随机整数,步长为 step。如果不提供 step,则默认为 1。


random_num = random.randrange(0, 100, 10)  print(random_num)  # 输出 0 到 90 之间(不包括 90)的一个整数,步长为 10

生成随机浮点数

random()

返回一个介于 0.0 和 1.0 之间的随机浮点数。


random_float = random.random()  print(random_float)  # 输出 0.0 到 1.0 之间的一个浮点数

uniform(a, b)

返回一个介于 a 和 b 之间的随机浮点数。


random_float = random.uniform(1.0, 10.0)  print(random_float)  # 输出 1.0 到 10.0 之间的一个浮点数

从序列中随机选择

choice(seq)

从非空序列 seq 中随机选择一个元素。


my_list = ['apple', 'banana', 'cherry']  random_fruit = random.choice(my_list)  print(random_fruit)  # 输出列表中的一个随机元素

shuffle(x)

就地打乱序列 x 的元素。


my_list = [1, 2, 3, 4, 5]  random.shuffle(my_list)  print(my_list)  # 输出被打乱顺序的列表

sample(population, k)

从 population 序列中随机选择 k 个不重复的元素。


my_list = [1, 2, 3, 4, 5, 6, 7, 8, 9]  random_sample = random.sample(my_list, 3)  print(random_sample)  # 输出列表中的 3 个随机且不重复的元素

设置随机数种子

使用 seed(a) 函数可以为随机数生成器设置种子,这样每次使用相同的种子时,生成的随机数序列都是相同的。这对于需要可重现结果的测试或模拟非常有用。


random.seed(42)  # 设置种子为 42  print(random.randint(1, 10))  # 多次运行这段代码将输出相同的整数

注意事项

  • random 模块生成的随机数是伪随机的,意味着它们是由确定性算法生成的。因此,在需要加密安全的随机数时,不应使用 random 模块,而应使用 secrets 模块。
  • 默认情况下,随机数生成器的种子是系统提供的,这意味着每次程序运行时生成的随机数序列可能是不同的。通过设置种子,可以确保每次运行程序时生成相同的随机数序列。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 完全二叉树的层序遍历[天梯赛]
  • Python性能测试框架Locust实战教程
  • 腾讯云2核4G的云服务器性能咋样?支持多少人?
  • Python中的变量与常量
  • Zabbix与Prometheus区别简述
  • 关闭 Microsoft Word 2010 配置窗口
  • C语言例:设 int x; 则表达式 (x=4*5,x*5),x+25 的值
  • [C++打怪升级]--学习总目录
  • python快速入门一
  • 【测试篇】软件测试的基本概念
  • uni-app项目不显示<uni-icons></uni-icons>以及其他uni-开头的组件
  • 阶乘的最高位
  • Java 文件处理完全指南:创建、读取、写入和删除文件详细解析
  • Scala介绍与环境搭建
  • 【React】在 JSX 中通过大括号使用 JavaScript
  • 时间复杂度分析经典问题——最大子序列和
  • 《Javascript高级程序设计 (第三版)》第五章 引用类型
  • 【162天】黑马程序员27天视频学习笔记【Day02-上】
  • Android优雅地处理按钮重复点击
  • Bootstrap JS插件Alert源码分析
  • docker python 配置
  • E-HPC支持多队列管理和自动伸缩
  • github从入门到放弃(1)
  • HTML5新特性总结
  • Java IO学习笔记一
  • KMP算法及优化
  • Laravel深入学习6 - 应用体系结构:解耦事件处理器
  • LeetCode29.两数相除 JavaScript
  • leetcode378. Kth Smallest Element in a Sorted Matrix
  • Redis学习笔记 - pipline(流水线、管道)
  • Swift 中的尾递归和蹦床
  • vue-cli3搭建项目
  • Vue官网教程学习过程中值得记录的一些事情
  • 发布国内首个无服务器容器服务,运维效率从未如此高效
  • 基于Vue2全家桶的移动端AppDEMO实现
  • 看完九篇字体系列的文章,你还觉得我是在说字体?
  • 快速构建spring-cloud+sleuth+rabbit+ zipkin+es+kibana+grafana日志跟踪平台
  • 三栏布局总结
  • 什么软件可以剪辑音乐?
  • 线性表及其算法(java实现)
  • 小程序测试方案初探
  • 智能网联汽车信息安全
  • ###51单片机学习(1)-----单片机烧录软件的使用,以及如何建立一个工程项目
  • #pragma once与条件编译
  • #我与Java虚拟机的故事#连载06:收获颇多的经典之作
  • %3cli%3e连接html页面,html+canvas实现屏幕截取
  • (20)目标检测算法之YOLOv5计算预选框、详解anchor计算
  • (7)STL算法之交换赋值
  • (C#)一个最简单的链表类
  • (C)一些题4
  • (C++17) std算法之执行策略 execution
  • (ISPRS,2021)具有遥感知识图谱的鲁棒深度对齐网络用于零样本和广义零样本遥感图像场景分类
  • (Redis使用系列) Springboot 使用redis的List数据结构实现简单的排队功能场景 九
  • (vue)el-checkbox 实现展示区分 label 和 value(展示值与选中获取值需不同)
  • (阿里巴巴 dubbo,有数据库,可执行 )dubbo zookeeper spring demo