例如:
给10个人发送100元的红包
第一个人得到的红包在[ 0.01,( 100/10 ) * 2 ],也就是[ 0.01,20 ]之间取随机值。
假设前三个人领到的红包总金额为35元
第四个人的红包金额为[ 0.01,( (100-35)/7)*2 ],也就是[ 0.01,18.57 ]之间的随机值。
测试用例:
控制台输入两个整数,第一个整数为红包钱数,第二个为人数,输出每个人得到的红包金额。
参考代码:
import random
def hongbao(je, num):#je: 红包总金额
lis = [] # 用以存储每个人领取的红包金额
renshu = num # 抢红包人数
# 涉及红包金额可带 2 位小数部分
# 使用先乘 100 计算,再除 100 处理小数点部分
total_100 = je * 100
# 这里采用的是二倍均值法
# 除最后一人,先对前面领取红包金额进行处理
# 最后剩下的金额,即是最后一人的金额
for i in range(num - 1):
amount = random.randint(1, total_100 // renshu * 2)
# 每次减去当前随机金额,用剩余金额进行下次随机获取
total_100 -= amount #amount 为随机金额
renshu -= 1
lis.append(amount / 100)
lis.append(total_100 / 100)
return lis
total = float(input("请输入红包总金额:"))
num = int(input("请输入红包个数:"))
lis = hongbao(total, num)
print(lis)
random() 函数
random() 方法返回随机生成的一个实数,它在[0,1)范围内。
注意:random()是不能直接访问的,需要导入 random 模块,然后通过 random 静态对象调用该方法。
实例
以下展示了使用 random() 方法的实例:
实例
import random
# 生成第一个随机数
print "random() : ", random.random()
# 生成第二个随机数
print "random() : ", random.random()
以上实例运行后输出结果为:
random() : 0.281954791393
random() : 0.309090465205
random() 函数中常见的函数如下:
import 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的随机整数
a=[1,3,5,6,7] # 将序列a中的元素顺序打乱
random.shuffle(a)
print(a)