# 验证码
import random
def r_code(n,alpha = True):
s = ''
for i in range(n):
num = str(random.randint(0,9))
if alpha:
alpha1 = chr(random.randint(65,90))
alpha2 = chr(random.randint(97,122))
num = random.choice([num,alpha1,alpha2])
s = s + num
return s
a =r_code(6) # 默认alpha为True
print(a)
# 发红包
# 红包数量 钱数
# 拼手气红包
#方法一
import random
def hongbao(money,num):
money = money * 100 # 换成分 用整数来计算
ret = random.sample(range(1,money),num-1) # 取9个值分成10段
ret.sort()
ret.insert(0,0)
ret.append(money) #11个点 分为10段
print(ret)
for i in range(len(ret)-1): # 做成生成器
yield (ret[i+1] - ret[i])/100
ret = hongbao(200,10) # 生成器 循环领一个 发一个
for money in ret:
print(money)
# 方法二
import random
def Bonus(person,money): # 5,200
dict_person_money = {}
for i in range(person):
num = random.randint(1,100) # 99 99 99 99 99
dict_person_money["Person%s"%(i+1)] = num # person1:99
num_sum = 0
for i in dict_person_money:
num_sum += dict_person_money[i] # 5 * 99 = 495
for i in dict_person_money: # 99/495 1/5 * 200 = 40
x =round(dict_person_money[i]/num_sum*money,2)
dict_person_money[i] = '$%s'%x
return dict_person_money
result = Bonus(10,1)
print(result)
# 方法三 此方法不太公平
import random
def hb(n,money):
li = []
s =0
for i in range(n-1): # 取n-1次
# 平均值为1/n 则范围取 1/n+2 和 1/n-2之间的数
num = round(random.uniform(money/(n+2),money/(n-2)),2)
li.append(num)
s = s + num
num = round(money - s,2) # 最后一次通过相减得到
li.append(num)
random.shuffle(li) # 打乱列表
return li
ret = hb(10,100)
print(ret)