• Python生成随机数字/字符


    random库

    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
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    生成一个指定长度的随机字符串

    1. 使用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
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
    2. 使用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
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
    3. 使用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
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11

    Faker库

    使用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
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 个人信息类

      函数说明
      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]
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
  • 相关阅读:
    BUUCTF 金三 1
    Unity的碰撞检测(五)
    UEFI FD 文件分析
    “Bootstrap技术社区”网站——响应式网页(1+X Web前端开发中级 例题)
    03大数据技术之Hadoop(HDFS)
    C#语法糖系列 —— 第三篇:聊聊闭包的底层玩法
    资源管理的部分
    编程向导-JavaScript-基础语法-算术/赋值/逗号/运算符
    ISO7421D代替品 π122M31 双通道数字隔离器 更快更稳更安全
    计算机网络ISO七层网络模型及TCP
  • 原文地址:https://blog.csdn.net/weixin_49026134/article/details/125353136