随机数
例一:生成激活码
import string
import random
chars = string.ascii_letters + string.digits
# 返回abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
def getrandom(): # 定义一个函数,将一个含有4个随机元素的列表内的元素合并在一起组成一个字符串
return "".join(random.sample(chars, 4))
def concatenate(m): # 定义一个函数,将m个4元素字符串用“-”连接起来组成一个激活码
return "-".join([getrandom() for i in range(m)])
def generate(n): # 定义一个函数,返回n个激活码组成的列表
return [concatenate(4) for i in range(n)]
if __name__ == '__main__':
for item in generate(10): # 把列表里的10个激活码打印出来
print(item)
例二:一个学校,有3个办公室,现在有8位老师等待工位的分配,请编写程序,完成随机的分配
import random
offices = [[], [], []]
names = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']
for name in names:
index = random.randint(0, 2) # 产生一个随机数来代表办公室0, 1, 2
offices[index].append(name) # 人名在循环中依次出现,而办公室随机出现,从而实现将人随机分配到办公室的目的
i = 1
for tem in offices: # 遍历每间办公室的人数
print('办公室%d 的人数为%d' % (i, len(tem)))
i += 1
for name in tem: # 遍历每间办公室的人名
print('%s' % name, end='')
print('\n')
print('-' * 20)
随机数函数总结:
1) random() 返回0<=n<1之间的随机浮点数n;
2) random.uniform(a, b),用于生成一个指定范围内的随机符点数
3) random.randint(a, b),用于生成一个指定范围内的整数
4) random.randrange([start], stop[, step]),从指定范围内,按指定基数递增的集合中 获取一个随机数。
5) choice(seq) 从序列seq中返回随机的元素;
6) shuffle(seq, random]) 原地指定seq序列;
7) sample(seq, n) 从序列seq中选择n个随机且独立的元素;
8) gauss(mu,sigma)返回一个平均值为mu,标准差为sigma的高斯分布,也可以由正态分布函数生成normalvariate(mu, sigma)
9) lognormvariate(mu, sigma)返回一个平均值为mu,标准差为sigma的对数正态分布