random 函数作为 python 中生成随机数据的主要函数,在我们造数据的过程中有着非常广阔的应用
以下是 random 函数的几种主要用法:

print( random.randint(1,10) )        # 产生 1 到 10 的一个整数型随机数  
print( random.random() )             # 产生 0 到 1 之间的随机浮点数
print( random.uniform(1.1,5.4) )     # 产生  1.1 到 5.4 之间的随机浮点数,区间可以不是整数
print( random.choice('tomorrow') )   # 从序列中随机选取一个元素
print( random.randrange(1,100,2) )   # 生成从1到100的间隔为2的随机整数
print random.sample('zyxwvnmlkjihgfedcba',5)  # 多个字符中生成指定数量的随机字符

我以自己刚在新公司写的一个脚本为例:需要批量生成 C 端的账号,我需要每次生成随机的手机号、身份证号再去调注册接口、认证接口。批量生成随机的手机号和身份证号会有很多应用到 Random 函数的地方。
手机号码:3 位前缀 +8 位随机数字
随机取 3 位前缀:

list = ['130','134','135','137','139','181','188','189']
        temp = random.choice(list)

8 位随机数字,这里提供 2 种写法:

mobile = temp+''.join(random.choice("0123456789") for i in range(8))
mobile = temp + ''.join(random.sample(string.digits,8))

身份证号码:6 位地区码 + 出生日期 + 三位随机数 + 权重位
6 位地区码,如果想取值范围广一些,大家可以把地区码写到.txt 或者 excel 里面去读取,我这里就随机列了一些地区码去取:

arealist = [ "440301","370600", "370601", "370602", "370611", "370612", "370613", "370634", "370681",
                                 "370682", "370683", ]
area = random.choice(arealist)

随机生成出生日期,这里我的方法是在一个范围区间随机取一个时间戳,但是 time.mktime() 方法有个坑,不能输入 1970 年之前的日期:

start = (1971, 1, 17, 17, 3, 38, 1, 48, 0)
end = (2001, 12, 1, 12, 10, 10, 10, 10, 10)
start_time = time.mktime(start)
end_time = time.mktime(end)
s = random.randint(start_time,end_time)
toule = time.localtime(s)
birth = time.strftime("%Y%m%d",toule)

生成 3 位随机数:

d = random.randint(100,999)

最后一位权重码计算:

temp = area+str(birth)+str(id)
        count=0
        weight = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]
        checkcode = {0:'1',1:'0', 2:'X', 3:'9',4:'8',5:'7',6:'6',7:'5',8:'4',9:'3',10:'2'}
        for i in range(0,len(temp)):
            tes = int(temp[i])
            count = count+tes*weight[i]
        last = count%11
        lastcode = checkcode[last]
        IDcard = temp + ''.join(lastcode)


↙↙↙阅读原文可查看相关链接,并与作者交流