python常用库random

这篇具有很好参考价值的文章主要介绍了python常用库random。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

random是python自带的库,用来生成随机数,或随机取值等。

随机生成值

随机浮点数

random.random()

random.random():生成[0, 1)之间的随机浮点数并返回

import random
r = random.random()
print(r)

执行结果如下:

0.9639100107207462

random.uniform(a, b)

random.uniform(a, b):在指定范围[a, b](或[b, a])之间,随机生成一个浮点数并返回;参数a和b的类型是浮点数

import random
r1 = random.uniform(2, 19.3)
r2 = random.uniform(190, 47)
r3 = random.uniform(-78, 2)
print("在[2, 19.3]之间的随机数:", r1)
print("在[190, 47]之间的随机数:", r2)
print("在[-78, 2]之间的随机数:", r3)

执行结果如下:

在[2, 19.3]之间的随机数: 4.030505355527254
在[190, 47]之间的随机数: 172.06876178208802
在[-78, 2]之间的随机数: -67.73925750171473

随机整数

random.randint(a, b)

random.randint(a, b):在[a, b]之间随机生成一个整数并返回

  • 参数a和b必须是int类型的数据,且a<=b,否则参数校验报错
import random

r1 = random.randint(2, 19)
r2 = random.randint(190, 190)
r3 = random.randint(-78, 2)
print("在[2, 19]之间的随机整数:", r1)
print("在[190, 190]之间的随机整数:", r2)
print("在[-78, 2]之间的随机整数:", r3)

执行结果为:

在[2, 19]之间的随机整数: 5
在[190, 190]之间的随机整数: 190
在[-78, 2]之间的随机整数: -41

random.randrange(start, stop, step)

random.randrange(start, stop=None, step=1):在[start, stop)之间,以start开始,间隔step,到stop(不包含)结束,随机取其中一个数值,类似于在range(start, stop, step)中随机取一个数值

  • 参数start、stop、step必须是整数(可以为float类型,但是必须是整数),否则会报错
  • step不能为0
    • 若step>0,则必须满足start<stop,即start必须小于stop(大于等于会报错)
    • 若step<0,则必须满足start>stop
  • 参数可以只传一个,传一个时,默认传入的是stop的值,这个时候start为0
import random

r1 = random.randrange(2, 19)
r2 = random.randrange(2, 19)
r3 = random.randrange(2, 3)
print("在[2, 19)之间的随机整数:  randrange(2, 19)=", r1)
print("在[2, 19)之间的随机整数:  randrange(2, 19)=", r2)
print("在[2, 3)之间的随机整数(只有2符合):  randrange(2, 3)=", r3)

r4 = random.randrange(2, 19, 4)
r5 = random.randrange(2, 6, 4)
print("在[2, 19)之间的随机整数,且与2的差可被4整除:  randrange(2, 19, 4)=", r4)
print("在[2, 6)之间的随机整数(一直是2):  randrange(2, 19, 4)=", r5)

r6 = random.randrange(-45, 4)
print("参数为负数时参考:  randrange(-45, 4)=", r6)
r7 = random.randrange(12, 3, -2)
print("参数step为负数时参考:  randrange(12, 3, -2)=", r7)

执行结果如下:

在[2, 19)之间的随机整数:  randrange(2, 19)= 9
在[2, 19)之间的随机整数:  randrange(2, 19)= 12
在[2, 3)之间的随机整数(只有2符合):  randrange(2, 3)= 2
在[2, 19)之间的随机整数,且与2的差可被4整除:  randrange(2, 19, 4)= 6
在[2, 6)之间的随机整数(一直是2):  randrange(2, 19, 4)= 2
参数为负数时参考:  randrange(-45, 4)= -27
参数step为负数时参考:  randrange(9, 3, -2)= 8

随机取值

random.choice(seq)

random.choice(seq):从序列seq中随机取一个元素
seq可以是字符串,为字符串时是随机取一个字符,如果是列表、元组等,则是随机取一个元素,也可以是序列类型的迭代器,比如range()

import random

r1 = random.choice("abcdefghijklmn1234567890")
print("从字符串随机取值:", r1)

r2 = random.choice([34, 16, "24w", "xiaoba", 34.21, [23, 66]])
print("从列表中随机取元素:", r2)

r3 = random.choice((45, "rand", "没门", 23.63))
print("从集合中随机取元素:", r3)

itera = range(2, 10, 2)
r4 = random.choice(itera)
print("参数类型是", type(itera), "从中随机取的值:", r4)

执行结果如下:

从字符串随机取值: 5
从列表中随机取元素: xiaoba
从集合中随机取元素: 45
参数类型是 <class 'range'> 从中随机取的值: 4

random.choices()

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

  • 返回:返回一个元素个数为k的列表,元素是从population中随机获取(可重复)
  • 参数:
    • population:必须是序列形式的(字符串不行),比如列表、元组、集合、序列类型(range这种)等
    • weights:相对权重设置,序列形式传入,序列的元素个数必须与population的元素个数保持一致
    • cum_weights:累加权重,序列形式传入,序列的元素个数必须与population的元素个数保持一致
    • k:随机获取次数,即循环多少次从population中随机获取元素,默认为1

未设置权重

若未设置权重时,每个元素被随机到的概率是一样的

import random

data = ['人', '生', '苦', '短']
print("data的数据为:", data)
# 默认循环data列表1次进行随机获取
r1 = random.choices(data)
print("random.choices(data) \n   结果为:", r1)

# 设置循环data列表6次进行随机获取
r2 = random.choices(data, k=6)
print("\nrandom.choices(data, k=6) \n   结果为:", r2)

执行结果如下:

data的数据为: ['人', '生', '苦', '短']
random.choices(data) 
   结果为: ['人']

random.choices(data, k=6) 
   结果为: ['短', '苦', '短', '短', '生', '生']

设置权重

设置权重是要对population参数中的每一个元素进行设置(少一个都不行)

相对权重

weights参数是以相对权重的方式来设置权重的,比如weights=[2, 3, 1, 3]时,第一、二、三的概率分别为2/9、3/9、1/9,计算方式为:对应权重/总权重,总权重weights各个元素的和,即2+3+1+3=9

import random

data = ['人', '生', '苦', '短']
print("data的数据为:", data)

r1 = random.choices(data, weights=[2, 3, 1, 3], k=6)
print("设置了相对权重:", r1)

执行结果如下:

data的数据为: ['人', '生', '苦', '短']
设置了相对权重: ['苦', '短', '人', '短', '生', '短']
累加权重

还可以以累加权重的方式来设置权重,累加权重的设置是在cum_weights参数中传入的。累加权重可以理解为当前元素的权重值=前一个元素权重值+自个的权重值,所以当前元素的权重值肯定是大于等于前一个元素的权重值,最后一个元素就是总权重值。

可以以相对权重去理解累加权重,比如weights=[2, 3, 1, 3]想转成累加权重的话,思路如下:

  • 第1个元素累加权重值cum_weights[0]计算:前面没有其他元素了,前一个元素的权重值可以理解为0,所以它的累加权重值是weights[0]+0,即cum_weights[0] = weights[0] = 2
  • 第2个元素累加权重值cum_weights[1]计算:前一个元素的累加权重值cum_weights[0],第二个元素自个的权重值是weights[1],所以cum_weights[1]=cum_weights[0]+weights[1]=2+3=5
  • 第3个元素累加权重值cum_weights[2]计算:前一个元素的累加权重值cum_weights[1],第二个元素自个的权重值是weights[2],所以cum_weights[2]=cum_weights[1]+weights[2]=5+1=6
  • 第4个元素累加权重值cum_weights[3]计算:前一个元素的累加权重值cum_weights[2],第二个元素自个的权重值是weights[3],所以cum_weights[3]=cum_weights[2]+weights[3]=6+3=9

最后得出weights=[2, 3, 1, 3]转成累加权重的设置是:cum_weights=[2, 5, 6, 9]

import random

data = ['人', '生', '苦', '短']
print("data的数据为:", data)

r1 = random.choices(data, cum_weights=[2, 5, 6, 9], k=6)
print("设置了累加权重:", r1)

r2 = random.choices(data, cum_weights=[0, 1, 1, 1], k=6)
print("累加权重,全部是第二个元素(生):", r2)

执行结果为:

data的数据为: ['人', '生', '苦', '短']
设置了累加权重: ['生', '短', '人', '短', '苦', '短']
累加权重,全部是第二个元素(生): ['生', '生', '生', '生', '生', '生']

choices()方法中一般weights和cum_weights传入其中一个参数即可,如果都传了,有些python版本是以cum_weights为准,有些Python版本会报错,所以最好就使用其中一个。

random.sample()

random.sample(population, k, *, counts=None):将population中的元素按照counts进行复制处理后,随机从处理后的序列中获取k个元素(每一个元素不重复取)并以列表的形式返回

  • population:必须是序列形式的(字符串不行),比如列表、集合、序列类型(range这种)等
  • counts:序列形式传入,序列的元素个数必须与population的元素个数保持一致
  • k:获取的元素个数,必传,且必须满足k<=population与counts处理后的元素个数,否则会报错

注意: sample()不重复取同一个索引的元素,并不表示返回的元素是不重复的,如果population和counts处理后的序列有重复的元素,则可能会返回一样的元素

import random

data = ['人', '生', '苦', '短']
print("data的数据为:", data)

r1 = random.sample(data, 2)
print("\n随机取2个元素:", r1)

r2 = random.sample(data, 4)
print("随机取4个元素(即全部):", r2)

r3 = random.sample(data, 4, counts=[0, 1, 2, 1])
# 如果传入了counts参数,则是对data进行处理后,在处理后的序列中随机取值
# counts的处理逻辑:counts是指定了data对应索引的值的个数,
# 即data[0]元素有count(0)=0个,data[1]元素有count(1)=1个,data[2]元素有count(2)=2个,data[3]元素有count(3)=1个
# 所以处理后的序列是:['生', '苦', '苦', '短']
# random.sample(data, 4, counts=[0, 1, 2, 1])表示从['生', '苦', '苦', '短']中取4个随机元素
print("传入了counts参数:", r3)

r4 = random.sample(data, 4, counts=[3, 1, 2, 1])
print("传入了counts参数(2):", r4)

执行结果如下:

data的数据为: ['人', '生', '苦', '短']

随机取2个元素: ['苦', '短']
随机取4个元素(即全部): ['生', '短', '苦', '人']
传入了counts参数: ['生', '苦', '短', '苦']
传入了counts参数(2): ['人', '短', '人', '苦']

随机排序

random.shuffle()

random.shuffle(x: List, random=None):将列表x随机排序,即打乱原有的排序
random这个参数我也不知道怎么用,等我以后有需求了再去了解,就酱

import random

data = ['人', '生', '苦', '短', "我", "用", "Python"]
print("乱序前:", data)
random.shuffle(data)
print("乱序后:", data)

执行结果如下:文章来源地址https://www.toymoban.com/news/detail-776459.html

乱序前: ['人', '生', '苦', '短', '我', '用', 'Python']
乱序后: ['苦', '短', '人', 'Python', '生', '我', '用']

到了这里,关于python常用库random的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 浏览器常用基本操作之python3+selenium4自动化测试(基础篇)

    1、打开指定的网页地址 我们使用selenium进行自动化测试时,打开浏览器之后,第一步就是让浏览器访问我们指定的地址,可使用get方法实现 1 2 3 from selenium import webdriver driver = webdriver.Edge() driver.get( \\\'https://www.baidu.com/\\\' )   # 本行用于访问指定的地址 2、获取当前页面url 我们在

    2024年02月01日
    浏览(78)
  • 自动化测试常用脚本语言有哪些?

    在自动化测试中,常用的脚本语言包括: 1. Python:Python是一个简洁、易读且功能强大的脚本语言,广泛应用于自动化测试领域。它具有丰富的测试框架和库,可以用于Web、移动应用和API等各种类型的测试。 2. Java:Java是一种面向对象的编程语言,具有跨平台的特性。在自动化

    2024年02月09日
    浏览(50)
  • Web自动化之Selenium常用操作

    本文总结使用selenium进行web/UI自动化时,会用到的一些常用操作。 是元素定位另外一种方式,跟上面的8种底层一样。 在定义driver的时候设置chrome_options参数,该参数是一个Options类所实例化的对象。其中,常用的参数是设置浏览器是否可视化和浏览器的请求头等信息,前者可

    2024年02月02日
    浏览(54)
  • 分享几个 Selenium 自动化常用操作

    最近工作会用到 selenium 来自动化操作一些重复的工作,那么在用selenium写代码的过程中,又顺手整理了一些常用的操作,分享给大家。 常用元素定位方法 虽然有关selenium定位元素的方法有很多种,但是对于没有深入学习,尤其是没有前端知识的朋友来说,常用的就那几招。

    2024年04月10日
    浏览(42)
  • 自动化测试2:selenium常用API

    目录 1.webdirver API 1.1.定位元素 1.2CSS 1.语法 2,使用 1.3XPath定位 1.语法 2.使用 2.操作测试对象 2.1.鼠标点击与键盘输入 2.2submit 提交表单 2.3text 获取元素文本 3.添加等待 3.1.sleep休眠 3.2.智能等待 3.2.1.隐式等待 3.2.2显示等待 4.打印信息 4.1打印url 4.2打印title 5.浏览器的操作 5.1浏览器

    2024年02月09日
    浏览(44)
  • 最常用的5个网页自动化点击工具

    最常用的网页自动化点击工具主要有以下几种: 1. Selenium - 这是最流行的网页自动化测试工具,支持多种浏览器和语言,可用于自动填充表单、自动登录等。 2. Puppeteer - 这是 Chrome 和 Chromium 的官方自动化工具,使用 JavaScript API,非常强大,可以完全控制浏览器,支持拦截网络请求等。

    2024年02月10日
    浏览(41)
  • Web自动化之Selenium常用操作方法大全

    本文总结使用selenium进行web/UI自动化时,会用到的一些常用操作。 定位元素 driver.find_element_by_xpath()#1、绝对路径 2、元素属性 3、层级和属性结合 4、使用逻辑运算符 driver.find_element_by_id()#根据id定位,HTML规定id属性在HTML文档中必须是唯一的 driver.find_element_by_name()#name属性定位

    2024年03月26日
    浏览(52)
  • java+selenium自动化测试之8大常用定位方法

    定位元素:Selenium能够模拟用户去浏览器页面上执行对应(输入,点击,清除,提交)等操作,它是凭什么方式去寻找到页面的元素?Selenium没有视觉、听觉等。Selenium通过在页面上寻找元素位置,找到元素后,然后对元素进行相应的操作,Selenium寻找元素位置的方法,称之为

    2024年04月27日
    浏览(36)
  • 「 网络安全常用术语解读 」安全自动化协议SCAP详解

    本文主要介绍什么是SCAP,SCAP的产生背景是怎样的,SCAP有什么用途,有哪些组件,各个组件的用途是什么? 由于计算机和网络技术的快速发展,越来越多的软件和系统被应用到企业和机构中,这些软件和系统的安全问题也日益凸显。传统的安全措施,如防火墙、入侵检测等,

    2024年01月23日
    浏览(42)
  • ​基于多种语言,使用Selenium实现自动化的常用单元测试框架

    Selenium是自动化网络应用程序的首选工具。Selenium支持基于Java、C#、PHP、Ruby、Perl、JavaScript和Python等多种编程语言的各种单元测试框架。这些框架用于在 Windows、MacOS 和 Linux 等不同平台的网络应用程序上执行测试脚本。任何成功的自动化流程都有赖于强大的测试框架,这些框架

    2024年01月21日
    浏览(55)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包