软件测试|Python random模块,超乎想象的强大

简介: 软件测试|Python random模块,超乎想象的强大

image.png

Python的random模块是一个非常强大的工具,用于生成随机数和随机选择。它提供了许多函数和方法,可以满足各种随机化需求。本文将介绍random模块的基本功能和常见用法,以帮助读者更好地理解和利用这个模块。

返回整数

  1. random.randange()

语法如下:

random.randrange(stop)
random.randrange(start, stop[, step])

参数解析:

  • stop: 末尾数字,不包含(取不到 stop 这个值)
  • start: 起始数字,包含(取得到 start 这个值)
  • step: 步长

示例如下:

import random
for i in range(5):
    print(random.randrange(30))
############
9
25
21
3
20
------------------
import random
for i in range(5):
    print(random.randrange(10, 20))
###########
14
12
11
14
13
-------------------

import random

for i in range(5):
    print(random.randrange(20, 30, 2))
############
24
28
22
22
24
  1. random.randint()

语法如下:

random.randint(a, b)

语法说明:

  • 该语句相当于random.randint(a, b+1)
  • 返回随机整数 N 满足a <= N <= b

示例如下:

import random

for i in range(5):
    print(random.randint(10,20))
######
12
15
10
13
13

注:该方法可以返回两端的值

返回浮点数

  1. random.random()

语法格式:

random.random()

上述语法将返回一个[0.0,1.0)之间的一个浮点数

使用示例

import random

for i in range(5):
    print(random.random())
-----------------
0.051698653828633145
0.10619823413246887
0.33732593583951986
0.6763699334756532
0.16816052346812582


import math
import random

for i in range(6):
    print(math.ceil(random.random() * 1000))

---------------------
67
38
612
639
454
870
  1. random.uniform()

语法格式如下:

random.uniform(a, b)

语法说明:

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

使用示例

import random

for i in range(5):
    print(random.uniform(1, 10))

###############
5.457242422186069
8.633135221688587
2.9232627928020625
7.921168676991703
2.07340428271263

---------------------
import random

for i in range(5):
    print(random.uniform(12, 3))

####################
3.1848989873887614
5.15029109210898
3.947059333936842
9.637384540893176
4.816027706079555

以列表作为参数

  1. random.choice()

语法如下:

random.choice(seq)

语法说明:

  • 从非空序列 seq 返回一个随机元素
  • 如果 seq 为空,会抛出 IndexError

示例如下:

import string

print(random.choice([1, 2, 3, 4, 5]))
# 字母数组
print(random.choice(["a", "b", "c"]))
# 字母元组
print(random.choice(("a", "b", "c")))
# 字符串
print(random.choice("abcdef"))
# string 模块返回的大小写字母字符串
print(random.choice(string.ascii_letters))
# string 模块返回的数字字符串
print(random.choice(string.digits))
# string 模块返回的数字字符串+大小写字母字符串
print(random.choice(string.digits + string.ascii_uppercase))

#############
3
b
c
d
e
7
H
  1. random.choices()

语法如下:

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

参数说明:

  • populaiton:序列
  • weights:普通权重
  • cum_weights:累加权重
  • k:选择次数

注:weights 和 cum_weights 不能同时传,只能选择一个来传

示例如下:

import random
a = [1,2,3,4,5]
print(random.choices(a,k=5))

#########
[4, 3, 5, 3, 5]
---------
a = [1, 2, 3, 4, 5]
print(random.choices(a, weights=[0, 0, 0, 0, 1], k=5))

# 序列有多长,weights 对应的序列就得多长,每个位置都是一一对应
# 像这里,5 的权重是 1,其他是 0 ,所以每次都取 5,因为它的权重最高,其他元素没有权重
########
[5, 5, 5, 5, 5]

------------------------
a = [1, 2, 3, 4, 5]
print(random.choices(a, weights=[0, 0, 2, 0, 1], k=5))

# 2 的权重更大,所以取到它的概率更高
################
[3, 3, 5, 3, 5]
  1. random.shuffle()

语法如下:

random.shuffle(x[, random])
  • 将序列 x 随机打乱位置
  • 只能是列表[],元组、字符串会报错

示例如下:

import random

# 数字数组
a = [1, 2, 3, 4, 5]
random.shuffle(a)
print(a)

# 字母数组
b = ["a", "b", "c"]
random.shuffle(b)
print(b)

######
[4, 3, 2, 1, 5]
['b', 'a', 'c']
  1. random.sample()

语法如下:

random.sample(population, k)

示例如下:

import random
import string

print(random.sample([1, 2, 3, 4, 5], 3))
# 字母数组
print(random.sample(["a", "b", "c"], 3))
# 字母元组
print(random.sample(("a", "b", "c"), 3))
# 字符串
print(random.sample("abcdef", 3))
# string 模块返回的大小写字母字符串
print(random.sample(string.ascii_letters, 3))
# string 模块返回的数字字符串
print(random.sample(string.digits, 3))
# string 模块返回的数字字符串+大小写字母字符串
print(random.sample(string.digits + string.ascii_uppercase, 3))

############
[4, 3, 5]
['b', 'c', 'a']
['a', 'b', 'c']
['c', 'a', 'f']
['l', 't', 'y']
['0', '8', '3']
['5', '8', 'T']

总结

Python的random模块提供了许多强大的功能,用于生成随机数和随机选择。无论是用于游戏开发、数据分析还是密码生成等领域,都可以发挥重要作用。通过熟练掌握random模块的使用方法,可以增加程序的随机性和灵活性,为开发者带来更多可能性。希望本文对大家理解和使用random模块有所帮助!

相关文章
|
4天前
|
测试技术 持续交付 Apache
性能测试不再愁!Python+JMeter+Locust,三步打造高性能应用
【9月更文挑战第4天】随着互联网的发展,软件性能成为衡量应用成功的关键。性能测试确保应用稳定高效运行,但复杂环境和多样需求带来了挑战。Python、JMeter和Locust三款工具可构建高效全面的性能测试方案。Python语法简洁,库丰富;JMeter提供图形界面,支持多种协议;Locust基于Python,简单易用且高度可扩展。结合三者,能满足复杂需求,保证灵活性与高效性。无论初学者还是资深工程师,都能确保应用高性能运行。
11 1
|
8天前
|
Web App开发 测试技术 API
自动化测试之美:使用Selenium和Python进行Web应用测试
【8月更文挑战第31天】在软件开发的快节奏世界中,自动化测试如同一束明灯,照亮了质量保证之路。本文将引导你通过Selenium和Python的强大组合,探索如何构建高效的Web应用测试框架。我们不仅会讨论理论,还会深入代码,从一个简单的示例开始,逐步扩展至更复杂的场景。无论你是初学者还是有经验的开发者,这篇文章都将为你提供宝贵的见解和实用的技巧。让我们一同揭开自动化测试的神秘面纱,体验它的魅力所在。
|
8天前
|
Web App开发 XML 测试技术
自动化测试框架设计:以Python和Selenium为例
【8月更文挑战第31天】在软件开发的快节奏中,自动化测试成为确保产品质量的关键步骤。本文将引导读者了解如何结合Python语言和Selenium工具来设计一个高效的自动化测试框架。通过浅显易懂的语言和实际代码示例,我们将探索自动化测试框架的核心组件,并学习如何实现它们。无论你是测试新手还是希望提升自动化技能的开发者,这篇文章都将为你打开一扇通向高效软件测试的大门。
|
9天前
|
Python
如何在 Python 中导入模块
【8月更文挑战第29天】
15 1
|
9天前
|
Python
|
9天前
|
数据采集 JSON 算法框架/工具
我常用的几个经典Python模块
我常用的几个经典Python模块
|
7天前
|
安全 JavaScript 前端开发
自动化测试的魔法:如何用Python编写你的第一个测试脚本
【8月更文挑战第31天】 在软件的世界里,质量是王道。而自动化测试,就像是维护这个王国的骑士,确保我们的软件产品坚不可摧。本文将引导你进入自动化测试的奇妙世界,教你如何使用Python这把强大的魔法杖,编写出能够守护你代码安全的第一道防护咒语。让我们一起开启这场魔法之旅吧!
|
7天前
|
Web App开发 测试技术 持续交付
探索自动化测试:以Selenium和Python为例
【8月更文挑战第31天】自动化测试在现代软件开发中扮演着不可或缺的角色。本文将通过一个简化的示例,展示如何使用Selenium和Python进行Web应用的自动化测试。我们将从安装必要的工具开始,逐步构建一个简单的测试脚本,并执行它来验证其功能。通过这个过程,我们旨在揭示自动化测试的价值,并激励读者深入探索这一领域。
|
7天前
|
Web App开发 安全 测试技术
自动化测试中的Python魔法:使用Selenium和pytest框架
【8月更文挑战第31天】 在软件开发的海洋中,自动化测试是确保航行安全的灯塔。本文将带你探索如何利用Python语言结合Selenium和pytest框架,搭建一套高效的自动化测试体系。我们将从基础设置讲起,逐步深入到编写测试用例,最后通过一个实战案例来展示如何在实际项目中运用这些工具。文章旨在为读者提供一套清晰的自动化测试解决方案,让你的开发之旅更加顺畅。
|
7天前
|
测试技术 持续交付 开发者
自动化测试之美:从零开始构建Python测试脚本
【8月更文挑战第31天】在软件开发的海洋中,自动化测试是一艘能够引领我们高效航行的帆船。本文将带领读者踏上一段探索性旅程,深入浅出地介绍如何使用Python语言编写自动化测试脚本。从搭建测试环境到编写实用测试案例,我们将一步步解锁软件测试的秘密,确保代码质量和项目成功。让我们启航吧!
下一篇
DDNS