random模块
随机小数
random.random()
取(0-1)之间的小数
print(random.random()) 多次运行结果: 0.7625585812371684 0.41751820355234404 0.08773753644629267
random.uniform(m,n)
取(m-n)之间的小数
print(random.uniform(3, 4)) 多次运行结果: 3.316786336794635 3.2022091764571763 3.0448438517470997
随机整数
random.randint(m,n)
随机取m,n之间的整数,包括m以及n
print(random.randint(1, 3)) 多次运行结果: 3 1 1 2
random.randrange(m,n)
随机取m,n之间的整数,包括m但不包括nm
print(random.randint(1, 3)) 多次运行结果: 1 1 2 1
random.randrange(m,n,k)
随机在m,n区间内每两个数的数列中取一个整数,同样包括m,但不包括n
print(random.randrange(1, 4, 2)) 多次运行结果: 1 3 3
从列表中随机取值:
random.choice
从列表中随机取一个值
lst = ['a', 'b', (1, 2), 123] print(random.choice(lst)) 运行结果: b 123
random.sample(list,n)
从列表中随机取n个值
lst = ['a', 'b', (1, 2), 123] print(random.sample(lst, 2)) 运行结果: ['b', 'a'] [123, 'b']
打乱列表顺序
random.shuffle
在原列表的基础上修改,节省内存
生成验证码函数的小练习
要求可以选择生成验证码的位数以及纯数字或是字母数字的组合形式
def func(n=4, flag=True): ''' 这个函数是用来:随机生成字母数字的验证码 :param n:验证码的位数,默认为4 :param flag:当flag为True时输出字母数字组合的验证码,为False时输出出数字,默认为True :return:返回的是:验证码的字符串 ''' a = "" for i in range(n): num = random.randint(0, 9) if flag: alpha_upper = chr(random.randint(65, 90)) alpha_lower = chr(random.randint(97, 122)) num = random.choice([num, alpha_lower, alpha_upper]) a = a+str(num) return a
拼手气红包的练习
# 版本一,数量越多,出现的极小金额越多 def func1(num, money): ''' 这个函数是用来 手气红包 :param num:红包个数 :param money:红包金额 :return:返回的是 所抢红包金额 ''' lst = [] n = 1 sum = 0 for i in range(num-1): a = random.randint(1, money*100-(num-n)-sum) lst.append(a/100) n += 1 sum += a lst.append((money*100-sum)/100) print(lst) lit = random.sample(lst, num) for j in lit: return j print(func1(10, 200)) # 版本二,金额相对平均,与手气相关程度小 def func2(num, money): money = money * 100 ret = random.sample(range(1, money), num-1) ret.sort() ret.insert(0, 0) ret.append(money) for i in range(len(ret) - 1): yield (ret[i+1] - ret[i])/100 ret_g = func2(50, 10) for money in ret_g: print(money)