random是python自带库,使用前导入 import random 即可,无需安装。
| 函数 | 说明 |
|---|---|
| random.random() | 生成一个[0, 1)的随机浮点数 |
| random.uniform(a, b) | 生成一个[a, b)的随机浮点数 |
| random.randint(a, b) | 生成一个[a, b]的随机整数 |
| random.choice(series) | 从series序列中返回一个任意的元素,series可为字符串、列表、元组 |
| random.sample(series, num) | 从series序列中返回任意num个元素组成的一个列表 |
| random.shuffle(series) | 将列表中的所有元素打乱 |
| random.randrange(a, b, step) | 返回[a, b)按指定递增基数step集合中的一个随机数 |
举例:
import random
print(random.random()) # 0.8564557389763434
print(random.uniform(0, 100)) # 78.19630268831175
print(random.randint(0, 100)) # 45
print(random.choice('12345')) # 4
print(random.choice([1,2,3,4,5])) # 1
print(random.choice((1,2,3,4,5))) # 5
print(random.sample('12345', 3)) # ['1', '5', '2']
print(random.sample([1,2,3,4,5], 3)) # [5, 4, 1]
print(random.sample((1,2,3,4,5), 3)) # [4, 5, 1]
list = [1, 2, 3, 4, 5]
random.shuffle(list)
print(list) # [3, 5, 4, 1, 2]
print(random.randrange(0,20,5)) # 10使用random.randint(0,n)
思路:定义一个基础字符序列,要产生多长的字符串就循环调用多少次random.randint(0,n),n=基础字符序列的长度,在这个序列中选择随机位置的字符,然后进行拼接返回。
import random
import string
def generate_random_str(randomlength=16):
"""
生成一个指定长度的随机字符串
"""
random_str =''
# 使用string库中的字母、数字和标点符号组成一个基础字符序列
base_str = string.ascii_letters + string.digits + string.punctuation
length =len(base_str) -1
for i in range(randomlength):
random_str +=base_str[random.randint(0, length)]
return random_str
print(generate_random_str(30)) # T`^7:C?z4h0qd!JpO:MFNB2_GL>dXm使用random.choice()随机选择
import random
import string
def generate_random_str(randomlength=16):
"""
生成一个指定长度的随机字符串
"""
# 使用string库中的字母、数字和标点符号拼接程序列
str_list = [random.choice(string.ascii_letters + string.digits + string.punctuation) for i in range(randomlength)]
random_str = ''.join(str_list)
return random_str
print(generate_random_str(30)) # ')8D@Bu&\1ltf!}HUcI-.;^>Vy[n|V使用random.simple()随机选择
import random
import string
def generate_random_str(randomlength=16):
"""
生成一个指定长度的随机字符串
"""
# 使用string库中的字母、数字和标点符号组成一个基础字符序列
base_str = string.ascii_letters + string.digits + string.punctuation
str_lst = random.sample(base_str, randomlength) #randomlength<=lenth(base_str)
random_str = ''.join(str_lst)
return random_str使用Faker库可生成各种各样的伪数据(姓名、地址、邮箱、电话、密码、一段文字、一句话等)。
安装:pip install faker
导入:from faker import Faker
示例:
from faker import Faker
fk = Faker(locale='zh-Cn')
# 姓名
print(fk.name()) # 刘娜
# 身份证
print(fk.ssn()) # 141022195412020845
# 手机号
print(fk.phone_number()) # 18226186826
# 邮箱
print(fk.email()) # zoujie@example.org个人信息类
| 函数 | 说明 |
|---|---|
| fk= Faker(‘zh_CN’) | 默认生成的数据为为英文,使用zh_CN指定为中文 |
| fk.name() | 姓名 |
| fk.ssn() | 身份证 |
| fk.phone_number() | 手机号 |
| fk.email() | 邮箱 |
| fk.credit_card_number() | 银行卡号 |
| fk.address() | 带邮政编码的地址 |
| fk.company() | 公司名称 |
| fk.job() | 职称 |
| fk.email() | 邮箱 |
| fk.profile() | 档案信息 |
| fk.simple_profile() | 简单的档案信息 |
数字类
| 函数 | 说明 |
|---|---|
| fk.numerify() | 三位随机数字 |
| fk.random_digit() | 一位[0, 9]的随机数 |
| fk.random_int() | 一位[0, 9999]的随机数, 可设置[min, max] |
| fk.random_number() | 随机长度数字 |
文本、加密类
| 函数 | 说明 |
|---|---|
| fk.random_element() fk.random_letter() | 随机一位字母 |
| fk.pystr() | 随机长度字符串 |
| fk.word() | 随机一个词语 |
| fk.sentence() | 随机一个句子 |
| fk.paragraph() | 随机一个段落 |
| fk.text() | 随机一篇文章 |
| fk.url() | 随机url |
| fk.md5() | 随机生成md5 |
| fk.password() | 随机生成密码 |
日期类
| 函数 | 说明 |
|---|---|
| fk.year() | 年 |
| fk.month() | 月 |
| fk.date() | 日期:年月日 |
| fk.past_date() | 过去时间:年月日 |
| fk.date_this_year() | 当前年份:年月日 |
| fk.future_date() | 未来时间:年月日 |
| fk.date_between(start_date=‘-3y’, end_date=‘+1y’) | 自定义日期范围,3年前到1前后之间的 |
| fk.date_time() | 年月日 时分秒 |
| fk.future_datetime() | 未来时间:年月日 时分秒 |
| fk.date_time_between(start_date=‘-3y’, end_date=‘+1y’) | 自定义时间范围,3年前到1前后之间的 |
| fk.time() | 随机24小时时间 |
地理信息类
| 函数 | 说明 |
|---|---|
| fk.country() | 国家 |
| fk.country_code() | 国家编码 |
| fk.province() | 省份 |
| fk.city() | 城市 |
| fk.district() | 区 |
| fk.postcode() | 邮编 |
from faker import Faker
fk = Faker(locale='zh-Cn')
# 从[0,9]中随机获取7位数字(可重复)
print([fk.random_digit() for i in range(7)]) # [2, 0, 7, 8, 2, 3, 2]
# 从[0,9]中随机获取7位数字(不可重复)
print([fk.unique.random_digit() for i in range(7)]) # [4, 9, 3, 6, 8, 5, 2]