目录

1、random库介绍

2、常用函数

3、不常用函数

4、案例


1、random库介绍

random模块实现了各种分布的伪随机数生成器,为什么称为伪随机数:即使人类使用算法等方式,以一个基准(也被叫做种子,最常用的就是时间戳)来构造一系列数字,这些数字的特控符合人们所理解的随机数。但因为是通过算法得到的,所以一旦算法和种子都确定,那么产生的随机数序列也是确定的,所以叫伪随机数

2、常用函数

random.seed(a)

设置初始化随机种子,可输出相同随机数序列;a取整数或浮点数,不设置时默认以系统时间为种子。

import random


print("没有设置种子时")
for i in range(5):
    ret = random.randint(1, 10)
    print(ret, end=" ")
print()

print("设置种子时")
random.seed(1)
for i in range(5):
    ret = random.randint(1, 10)
    print(ret, end=" ")

没有显示设定种子时,每次输出的随机数都是不一样的;显示设置种子时,每次输出的随机数都是一样的。

random.random() # 用于生成一个0.0到1.0的随机数

print(random.random())

random.uniform(a, b) # 生成一个[a, b]之间的随机小数;a,b取整数或浮点数

print(random.uniform(10, 20))

random.randint(a, b)  # 生成一个[a, b]之间随机整数

print(random.randint(10, 20))

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

# 生成一个[start, stop]之间以step步数的随机整数:start,stop,step取整数,step不设置时默认值为1

print(random.randrange(1, 100))  # 随机生成1-100之间的整数

print(random.randrange(1, 100, 2))  # 随机生成1-100之间奇数

print(random.randrange(2, 100, 2))  # 随机生成1-100之间偶数

random.getrandbits(k)  # 生成一个占内存k位以内的随机整数;k取长度的整数值

print(random.getrandbits(10))  # 生成一个内存占k位以内的随机数;k取长度的整数值

random.choice(seq)  # 从序列类型seq中随机返回一个元素;seq取序列类型:如字符串、列表、元组

print(random.choice([1, '10', 3, 5, 7, 1001]))

random.shuffle(seq)

将序列类型中元素随机排序,返回打乱后序列,seq被改变(改变原序列),shuffle为洗牌之意;seq取序列类型:如字符串,列表,元组


list = ['a', 'b', 'c', 'd', 'e', 'f']
random.shuffle(list)
print(list)

random.sample(pop, k)

从pop中选取k个元素,以列表类型返回(不改变原列表);pop取序列类型,k取整数:代表选取个数

print(random.sample(list, 3))

3、不常用函数

random.getstate()  # 等等,遇到再说吧

4、案例

import random
import string


def get_random_string(length):
    # 随机生成字母和数字的位数
    num_count = random.randint(1, length-1)
    letter_count = length-num_count

    # 随机抽样生成数字序列
    num_list = [random.choice(string.digits) for _ in range(num_count)]

    # 随机抽样生成字母序列
    letter_list = [random.choice(string.ascii_letters) for _ in range(letter_count)]

    # 合并字母和数字
    all_list = num_list + letter_list

    # 乱序
    random.shuffle(all_list)

    result = "".join(i for i in all_list)
    return result


# 生成10位的密码
password1 = get_random_string(10)
print(password1)

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐