程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

Python生成隨機數字/字符

編輯:Python

文章目錄

  • random庫
    • 生成一個指定長度的隨機字符串
  • Faker庫
    • 生成不重復的數據

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. 使用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
  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)) # ')[email protected]&\1ltf!}HUcI-.;^>Vy[n|V
  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

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()) # [email protected]
  • 個人信息類

    函數說明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()隨機urlfk.md5()隨機生成md5fk.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. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved