首页 > 编程语言 >python random 模块

python random 模块

时间:2024-04-10 13:57:11浏览次数:15  
标签:python random list weights 随机 模块 print import

random 说明

生成伪随机数。不应将此模块的伪随机生成器用于安全目的。 有关安全性或加密用途,应使用 secrets 模块。

设置随机数种子

seed(a=Noneversion=2)

初始化随机数生成器。如果使用相同的种子,将会生成相同的随机数序列。
import random

random.seed(23)
print(random.random()) # 给定种子后,这个调用每次会输出同样的随机数

生成随机整数

randint(a, b)

返回随机整数 N 满足 a <= N <= b。相当于 randrange(a, b+1)。
import random

# 生成1到10之间的随机整数
random_int = random.randint(1, 10)
print(random_int)

randrange(start, stop[, step])

可以生成一个指定范围内以指定步长递增的随机整数。这大致等价于 choice(range(start, stop, step)),但是支持任意大的取值范围并针对常见场景进行了优化。
import random

# 生成1到10之间的随机偶数
random_even = random.randrange(2, 11, 2)
print("随机偶数:", random_even)

getrandbits(k

返回具有 k 个随机比特位的非负整数。
import random

bit_num = random.getrandbits(4)  # 生成一个4比特长度的随机整数
print("随机比特数:", bit_num)

生成序列随机数

choice(seq) 

从非空序列 seq 返回一个随机元素。 如果 seq 为空,则引发 IndexError。
import random
my_list = ['apple', 'banana', 'cherry', 'date']
rand_element = random.choice(my_list)
print(rand_element)

choices(populationweights=None*cum_weights=Nonek=1)

允许根据权重从序列中进行多次随机选择(有放回抽样),返回大小为 k 的元素列表。如果 population 为空,则引发 IndexError。
population:   必需,表示要选择元素的序列(可以是列表、元组等)。
weights:      可选,表示每个元素的权重列表。权重越高,被选中的概率越大。默认情况下,每个元素的权重相等。
cum_weights:  可选,表示经过累积的权重列表。如果提供了cum_weights,则不需要提供weights。
k:            表示要选择的元素数量,默认为1。
import random

candidates = ['Alice', 'Bob', 'Charlie']
weights = [0.4, 0.3, 0.3]  # 对应每个候选人的权重

# 模拟100次投票
results = random.choices(candidates, weights=weights, k=100)

# 统计投票结果
vote_counts = {candidate: results.count(candidate) for candidate in candidates}
print("投票结果:", vote_counts)   # 输出:投票结果: {'Alice': 48, 'Bob': 29, 'Charlie': 23}

shuffle(x)

就地将序列 x 随机打乱位置。
import random
my_list = ['apple', 'banana', 'cherry', 'date']
random.shuffle(my_list)

print(my_list) # 输出:['date', 'cherry', 'apple', 'banana']

sample(populationk*counts=None)

从总体序列中选取的唯一元素的长度为 k 个的唯一元素,返回一个新的列表。 用于无重复的随机抽样。

在 3.11 版本发生变更: population 必须为一个序列。 不再支持将集合自动转换为列表。
import random
my_list = ['apple', 'banana', 'cherry', 'date']
random_samples = random.sample(my_list, 2)
import random

random_samples = random.sample(['red', 'blue'], counts=[4, 2], k=5)  # 等价于 sample(['red', 'red', 'red', 'red', 'blue', 'blue'], k=5)
print(random_samples) # 输出:['red', 'red', 'blue', 'blue', 'red']

生成随机字节

randbytes(n)

生成 n 个随机字节。
import random
import base64

# 定义要生成的随机字节的数量
n = 10
# 生成随机字节
random_bytes = random.randbytes(n)
# 输出随机字节
print(random_bytes)  # 输出类似于 b'\xc4%\t\xcfK\x1d\xc0mm\x00'
# 转换为十六进制字符串
hex_string = random_bytes.hex()
print(hex_string)  # 输出类似于 c42509cf4b1dc06d6d00
# 转换为整数列表
int_list = list(random_bytes)
print(int_list)  # 输出 [196, 37, 9, 207, 75, 29, 192, 109, 109, 0]
# 转换为Base64编码字符串
base64_string = base64.b64encode(random_bytes)
print(base64_string)  # 输出类似于b'xCUJz0sdwG1tAA=='
# 转换为可打印字符串(仅对可打印字符)
printable_string = random_bytes.decode('ascii', errors='ignore')
print(printable_string)  # 输出可能不是完全可打印,取决于随机字节

实值分布

random()

返回 0.0 <= X < 1.0 范围内的下一个随机浮点数。
import random
rand_num = random.random()
print(rand_num)

uniform(a, b)

返回一个随机浮点数 N ,当 a <= b 时 a <= N <= b ,当 b < a 时 b <= N <= a 。

终点值 b 可能包括或不包括在该范围内,具体取决于表达式 a + (b-a) * random() 的浮点舍入结果。
import random
rand_float = random.uniform(0, 1)
print(rand_float)

参考文档

https://docs.python.org/zh-cn/3.12/library/random.html#module-random

标签:python,random,list,weights,随机,模块,print,import
From: https://www.cnblogs.com/wangguishe/p/18109823

相关文章

  • python 会员信息管理系统2.0
    问题介绍综合案例实现:会员管理系统设计与实现-V3利用所学习的知识点 ,结合会员管理系统的分析与实现, 了解面向对象开发过程中类内部功能的分析方法,系统讲解 Python语法、控制结构、四种典型序列 ,函数定义以及面向对象语法和模块的应用。(使用面向对象的思想)面向对象编......
  • 零基础入门学习Python第一阶
    01初识PythonPython简介Python的历史1.1989年圣诞节:GuidovonRossum开始写Python语言的编译器。2.1991年2月:第一个Python编译器(同时也是解释器)诞生,它是用C语言实现的(后面),可以调用C语言的库函数。在最早的版本中,Python已经提供了对“类”,“函数”,“异常处理”等构造块的......
  • 【Python使用turtle库随便画一些乱七八糟的东西】
    1、画一些五颜六色乱七八糟的Python代码如下:importrandomimportturtle#导入turtle和random库t=turtle.Turtle()#创建海龟笔t#创建一个常用颜色列表用来随机抽取颜色colors=["red","orange","lime","yellow","blue","indigo","p......
  • GD32F470_GP2Y0A02YK0F 红外激光测距传感器 避障测距20-150cm模块移植
    2.4红外测距传感器GP2Y0A02YKOF是夏普的一款距离测量传感器模块。它由PSD(positionsensitivedetector)和IRED(infraredemittingdiode)以及信号处理电路三部分组成。由于采用了三角测量方法,被测物体的材质、环境温度以及测量时间都不会影响传感器的测量精度。传感器输......
  • GD32F470_VL53L0X激光测距传感器模块移植
    2.15VL53L0X激光测距传感器VL53L0X是ST公司推出的新一代ToF激光测距传感器,采用了第二代FlightSenseTM技术,利用飞行时间(ToF)原理,通过光子的飞行来回时间与光速的计算,实现测距应用。较比上一代VL6180X,新的器件将飞行时间测距长度扩展至2米,测量速度更快,能效更高。除此......
  • Python计算两个质谱谱图的相似度——Matchms
    在做实验的时候需要在python环境下比较两个谱图的相似度,对于这个需求就遇到两个问题:如何导入谱图,让其在python环境中显示如何对比相似度,谱图之间的相似度与向量之间的相似度有何差别我调研了一些库可以用在python中去处理谱图,包括pyteomics、spectrum_utils还有今天要介绍的......
  • Pointnet++改进即插即用系列:全网首发iRMB反向残差移动块 |即插即用,提升特征提取模块性
    简介:1.该教程提供大量的首发改进的方式,降低上手难度,多种结构改进,助力寻找创新点!2.本篇文章对Pointnet++特征提取模块进行改进,加入iRMB,提升性能。3.专栏持续更新,紧随最新的研究内容。目录1.理论介绍2.修改步骤2.1步骤一     2.2步骤二     2.3步骤三......
  • LTM4644IY#PBF DC/DC电源模块
    LTM4644IY#PBF规格信息:制造商:AnalogDevicesInc.产品种类:开关稳压器RoHS:是安装风格:SMD/SMT封装/箱体:BGA-77输出电压:0.6Vto5.5V输出电流:4A输出端数量:4Output最大输入电压:14V拓扑结构:Buck最小输入电压:4V开关频率:1000kHz最小工作温度:-40......
  • Python教程‘r’的使用技巧
    嗨,大家好!今天,我们将探讨Python中一个重要但经常被忽视的小技巧'r'。 在Python中,r是一个前缀,它用于处理原始字符串(rawstrings)。原始字符串与普通字符串不同,它们让你在字符串中使用反斜杠符号\而不必担心它们被解释成转义字符。为什么要使用原始字符串?原始字符串......
  • python写的收Udp消息后,再发到 MQTT 的例子
    收到Udp消息后,再发到MQTT的例子完整代码udp2mqtt.pyimportjsonimportloggingimportrandomimportsocketimporttimeimportpaho.mqtt.clientasmqtt_clientBROKER='*******.ala.cn-hangzhou.emqxsl.cn'PORT=8084TOPIC="python-mqtt/wss"CLIEN......