内置random模块常用方法

  • 一、方法汇总
  • 二、方法的使用
  • 1、randrange()
  • 2、random()
  • 3、randint()
  • 4、uniform()
  • 5、sample()
  • 6、shuffle()
  • 7、choice()
  • 8、choices()
  • 三、练习题


一、方法汇总

Python有一个random内置模块,可用于生成随机数。要使用其内置函数,需要先导入random模块。以下是汇总常用的几个方法:

方法

描述

randrange()

返回给定范围之间(左闭右开)的随机数

random()

返回介于[0,1)之间的随机浮点数

randint()

返回给定范围之间(包括两者)的随机数

uniform()

返回两个给定参数(包括两者)之间的随机浮点数

sample()

返回序列的给定样本(此方法不会更改原始序列的顺序)

shuffle()

取得序列,并以随机顺序返回序列(此方法会改变原有序列的顺序)

choice()

从指定序列中返回一个随机选择的元素

choices()

从指定序列中返回随机选择的列表

二、方法的使用

1、randrange()

(一)描述:
randrange() 用于返回指定范围之间的随机数,左闭右开,可以指定步长,步长默认为1。
(二)语法:

import random
random.randrange(start, stop, step)

(三)参数说明:

start – 指定范围内的开始值,包含在范围内,可以是正/负整数。
stop – 指定范围内的结束值,不包含在范围内,可以是正/负整数。
step – 指定递增基数,可以是正/负整数。

(四)实例:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time: 2021/5/23 下午 4:17
# @File: random_test.py
# @Software: PyCharm
import random

# 从1-100从随机选取一个奇数

a = random.randrange(1, 100, 2)
print("a: ", a)

# 从0~99随机选取一个数。 左闭右开,stop不包括

b = random.randrange(0, 100)
print("b: ", b)
# 输出结果:
a:  21
b:  73

2、random()

(一)描述:
random() 用于返回介于[0,1)范围内的随机浮点数。
(二)语法:

import random
random.random()

(三)参数说明:

无,不需要传参

(四)实例:

import random
c = random.random()
print("c: ", c)
# 格式化输出2位小数
print('c的值取2位小数是 %.2f' % c)
# 输出结果(每运行一次都不一样):
c:  0.6401644251696467
c的值取2位小数是 0.64

3、randint()

(一)描述:
randint() 用于返回指定范围之间的随机整数,包括start 和 stop。
(二)语法:

import random
random.randint(start, stop)

(三)参数说明:

start: 一个整数,指定从哪个位置开始。
stop: 一个整数,指定从哪个位置结束。

(四)实例:

import random
# 包括0 和 9
d = random.randint(0, 9)
print("d的值是:", d)
# 输出结果(每运行一次都不一样):
d的值是: 7

4、uniform()

(一)描述:
uniform() 用于返回两个给定参数(包括两者)之间的随机浮点数。
(二)语法:

import random
random.uniform(a, b)

(三)参数说明:

a: 指定最低可能结果的数字。
b: 指定最高可能结果的数字。

(四)实例:

import random
# 包括20 和 30
e = random.uniform(20, 30)
print("e的值是:", e)
# 输出结果(每运行一次都不一样):
e的值是: 21.41896906862559

5、sample()

(一)描述:
sample() 用于返回一个列表,其中从序列中随机选择指定数量的项目,需注意的是,此方法不会改变原有序列的顺序。
(二)语法:

import random

random.sample(sequence, k)

(三)参数说明:

sequence: 指一个序列, 可以是任何序列:列表,集合,范围等。
k: 指的是返回列表的大小。

(四)实例:

import random
my_list = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
f = random.sample(my_list, 5)
print("f随机序列是:", f)
# 输出结果(每运行一次都不一样):
f随机序列是: [1, 10, 0, 6, 3]

6、shuffle()

(一)描述:
shuffle() 取得一个序列(列表,字符串或元组),并以随机顺序返回一个序列(改变原有序列的顺序)。
(二)语法:

import random

random.shuffle(sequence, function)

(三)参数说明:

sequence: 指一个序列, 可以是任何序列:列表,元组,字符串等。
function: 返回0.0到1.0之间的数字的函数的名称。如果未指定,将使用random()函数。

(四)实例:

情况一:未指定function

import random
my_list = ['apple', 'banana', 'orange']
random.shuffle(my_list)
print("打乱后的序列是:", my_list)
# 输出结果(每运行一次都不一样):
打乱后的序列是: ['apple', 'orange', 'banana']

情况二:自己定义function

import random


def my_function():
    return 0.1


my_list = ["apple", "banana", "cherry"]
random.shuffle(my_list, my_function)

print(my_list)
# 输出结果(每次都一样):
 ['banana', 'cherry', 'apple']

7、choice()

(一)描述:
choice()方法从指定序列中返回一个随机选择的元素。该序列可以是字符串,范围,列表,元组或任何其他种类的序列。
(二)语法:

import random

random.choice(sequence)

(三)参数说明:

sequence: 指一个序列, 可以是任何序列:列表,元组,字符串等。

(四)实例:

import random
my_list = ["apple", "banana", "cherry"]

print("随机取得的元素是:", random.choice(my_list))
# 输出结果(每运行一次都不一样):
随机取得的元素是: apple

8、choices()

(一)描述:
choices()方法返回一个列表,其中包含从指定序列中随机选择的元素。可以使用weights参数或cum_weights参数权衡每个结果的可能性。该序列可以是字符串,范围,列表,元组或任何其他种类的序列。
(二)语法:

import random

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

(三)参数说明:

sequence: 指一个序列, 可以是任何序列:列表,元组,字符串等。
weights: 相对权重,可以在列表中权衡每个值的可能性。默认None
cum_weights: 累计权重,一个列表,可以权衡每个值的可能性,仅此一次累积可能性。
k: 定义返回列表长度的整数。

(四)实例:

import random

# 返回包含10个项目的列表。
# 该列表应包含从指定列表中随机选择的值,并且选择“apple”的可能性应该比其他两个高5倍。
my_list = ["apple", "banana", "cherry"]
result = random.choices(my_list, weights=[5, 1, 1], k=10)
print("随机取得的列表是:", result)
# 输出结果(每运行一次都不一样):
随机取得的列表是: ['apple', 'banana', 'apple', 'cherry', 'apple', 'apple', 'apple', 'apple', 'apple', 'apple']

三、练习题

题目:如何生成5位随机的验证码。

解答

import random


# 生成5位由数字和字母组成的验证码
def v_code():
    code = ""
    for i in range(5):   # 循环5次,获得5位的验证码字符串
        num = random.randint(0, 9)   # 从0-9中获取一位随机整数
        char = chr(random.randint(65, 90))  # 65-90 对应的是字母 A-Z,调用chr() 方法,将随机获得的整数转成字母
        add = random.choice([num, char])  # random.choice() 从序列中随机获取一个元素,可能是数字或字母
        code = code + str(add)  # 将获取到的随机字符转成字符串,拼接到code
    return code


print(v_code())

运行结果

NA2N8