random模块
【一】概要
【二】常见用法
random.random()
:
- 不可以传参限制区间
- 随机生成一个大于0小于1之间的浮点数
random.uniform(a,b)
:
- 需要传参限制区间
- 包含a,不含b
- 随机生成一个指定区间内的浮点数
random.randint(a.b)
:
- 需要传参限制区间
- 包含a,包含b
- 随机生成区间内的一个整数
random.randrange(start,stop,step)
:
- step默认为1
- 随机生成区间内的一个整数,可以通过设置步长取奇数或偶数等
random.choice(seq)
:
- seq是序列类型的数据,如列表(list)、元组(tuple)、字符串(string)等
- 随机从序列中返回一个数据
random.choices(population,k)
:
- population:表示待抽样的总体(population)或序列(可迭代对象),可以是列表、元组、集合等序列类型的数据。
- k :表示希望抽样的元素个数,即要从
population
中随机选择的元素数量。
k
可以大于 population
的长度,如果大于,抽样时可能会重复选择相同的元素。
random.sample(population,k)
:
- population:表示待抽样的总体(population)或序列(可迭代对象),可以是列表、元组、集合等序列类型的数据。
- k :表示希望抽样的元素个数,即要从
population
中随机选择的元素数量。
- 从数据中随机返回k个数据
- 从
population
中随机抽取 k
个不重复的元素,返回一个新的列表。如果 k
小于 0 或者大于 population
的长度,会引发 ValueError
异常。
random.shuffle(x)
:
- x :待打乱顺序的可变序列,如列表
- 打乱顺序,改变的是原值
【三】详解
random.random
| |
| res = random.random() |
| print(res) |
| |
| |
| res = random.uniform(1, 2) |
| print(res) |
| |
random.randint
| |
| res = random.randint(1, 5) |
| print(res) |
| |
random.randrange
| |
| |
| res = random.randrange(1, 10, 4) |
| print(res) |
| |
random.choice
| |
| res = random.choice(seq=[1, 2, 3]) |
| print(res) |
| |
| |
| res = random.choice(seq=[1, 2, 3, ('tuple',), ['list']]) |
| print(res) |
| |
random.choices
| |
| res = random.choices([1, 2, 3], k=4) |
| print(res) |
| |
random.sample
| |
| res = random.sample([1, 2, 3], 2) |
| print(res) |
| |
random.shuffle
| |
| list1 = [1, 2, 3] |
| res = random.shuffle(list1) |
| print(res) |
| print(list1) |
【四】小练习
【1】生成随机数字验证码
| import random |
| |
| |
| |
| def random_int(n): |
| |
| code = '' |
| |
| for i in range(n): |
| number = random.randomint(0,9) |
| |
| number = str(number) |
| code += number |
| return code |
| |
| |
| print(random_int(4)) |
| |
| def random_int(n): |
| |
| number_list = random.choices(range(0, 9), k=n) |
| |
| txt = ''.join([str(i) for i in number_list]) |
| return txt |
| |
| |
| print(random_int(4)) |
【2】生成随机数字+字母验证码
| import random |
| |
| def random_num_words(n): |
| code = '' |
| for i in range(n): |
| temp = random.choice([str(random.randint(0, 9)), |
| chr(random.randint(65, 90)), |
| chr(random.randint(97, 122))]) |
| code += temp |
| return code |
| |
| |
| print(random_num_words(4)) |
| |
【3】生成随机订单号
订单号生成规则
- 订单号生成规则通常是根据业务需求和系统设计来定义的,以下是一些常见的订单号生成规则的考虑因素:
- 唯一性:
- 时间戳:
- 使用时间戳作为订单号的一部分,以确保订单号的唯一性,并且可以根据时间轻松识别订单的生成顺序。
- 业务标识:
- 根据业务需求添加业务标识,例如产品类型、地区等,以便在订单号中包含更多信息。
- 随机数:
- 长度限制:
- 确保订单号的长度在可接受范围内,不要太短或太长,以方便存储和处理。
- 可读性:
- 如果需要,可以使订单号具有一定的可读性,例如包含字母、数字和特定字符的组合。
- 前缀/后缀:
- 可以添加前缀或后缀以区分不同类型的订单,例如区分正常订单和退货订单。
- 保留位数:
- 如果需要,可以规定订单号的某些位数表示特定的信息,例如表示订单来源、支付方式等。
- 版本控制:
- 考虑到系统升级或变更订单规则的可能性,可以在订单号中包含版本信息。
- 保留未使用号码:
- 考虑到系统可能存在一些未使用的订单号,可以规定一些规则来处理这些未使用的号码。
- 规则适应性:
- 确保订单生成规则具有一定的适应性,能够应对业务需求的变化。
生成订单号
| |
| import random |
| import time |
| |
| |
| |
| def order_num(): |
| |
| code = 'SF' |
| |
| timestamp = time.strftime("%Y%m%d%H%M%S") |
| |
| number_list = random.choices(range(0, 9), k=4) |
| random_num = ''.join([str(i) for i in number_list]) |
| |
| order_id = ''.join([code, timestamp, random_num]) |
| return order_id |
| |
| |
| print(order_num()) |
| |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了