lihuayuan
发表于 2017-9-17 19:13:15
好难
小白
_AnyWay
发表于 2017-9-18 18:00:34
学习
lLYPYTH
发表于 2017-10-13 13:24:03
aa
了解2号
发表于 2017-10-13 19:03:52
随机出来红包个数,然后随机分掉100元
import random
money = 100
#num红包份数,随机的红包数量
num = random.randint(1,100)
while num:
get_money = random.randint(1,money)
money = money - get_money
print('%d'%get_money)
if money == 0:
break
num = num - 1
了解2号
发表于 2017-10-13 19:07:21
了解2号 发表于 2017-10-13 19:03
随机出来红包个数,然后随机分掉100元
好像稍微有点问题
自在猫
发表于 2017-10-13 20:36:55
本帖最后由 自在猫 于 2017-10-13 20:39 编辑
from random import randint
list1 =
list2 =
print(list2)
算出来的红包带小数
ybo2017
发表于 2017-11-8 14:10:21
好像题目要求每个红包数目不一样哦,各位,实现起来应该更加复杂吧
shigure_takimi
发表于 2017-12-2 01:49:03
import random
def redMoney(total, div): # total=红包金额,div=份数, total应该大于等于div
if total < div:
print('无法分红包')
return 0
else:
allRedMoney = [] # 存放每个红包的金额
for i in range(div-1,0,-1):
## smallRed = random.randint(1, total-i)
## 小红包金额大于1块,并且要确保剩下的人至少能分到1块
## 此方法前面的人分的太多,后面的人基本只分到1块钱
smallRed = random.randint(1, total-i)//2
while smallRed == 0:
smallRed = random.randint(1, total-i)//2
total -= smallRed
allRedMoney.append(smallRed)
allRedMoney.append(total) # 最后一个人拿最后一份
return allRedMoney
for i in range(20):
print(redMoney(100,10))
## 分20次,结果如下,还算公平。
>>>
lxchace
发表于 2018-3-2 10:13:27
#Red Envelope
import random
def RedEnv(money,number):
lucky_money = []
if number<=0 or money<number:
print("你的红包不够分啊~")
exit()
else:
for i in range(number):
lucky_money.append(1)
for i in range(money - number):
lucky_man = random.randint(0,number-1)
lucky_money += 1
return lucky_money
def main():
mon_num = eval(input("请输入红包钱和人数,逗号隔开:"))
lucky_money = RedEnv(*mon_num)
for i in range(1,mon_num+1):
print("第%d个人获得了%d元。"%(i,lucky_money))
return
if __name__ == "__main__":
main()
南城顾她
发表于 2018-3-2 14:13:45
import random
def every_money(count, number, ago_money):
if number > 1:
money = random.randint(1, 10)
now_money = ago_money - money
print('第%s个人分到钱数为%s剩余%s' % (count, money, now_money))
count += 1
number -= 1
return every_money(count, number, now_money)
def main():
count = 1
every_money(count, 11, 100)
main()
新手潘包邮
发表于 2018-4-24 23:50:06
solomonxian 发表于 2017-9-9 13:16
用正态分布吧,可能比较符合现实
标准差对应分散程度,按循环次数上取u-3σ>= 0下最大比较好,
大佬
学学看看
发表于 2018-8-2 19:18:13
小木子c
发表于 2018-8-4 19:00:22
#这样分红包相对平均,而且最后一个拿的人可能分得最大的红包
#感觉比较符合微信那个抢红包的机制
import random
a =
m,count= 100,0
while 1:
b = random.choice(a)
if b > m//3: #为平均,不会太大
continue
m -= b
count += 1
a =
print(b)
if count == 9:
print(m) #剩下的钱直接给最后一个人
break
31
5
12
8
3
6
8
1
1
25
>>>
15
18
9
1
10
3
3
3
9
29
>>>
no7line
发表于 2018-8-21 16:55:25
import random
def fun4(qian,renshu):
b = []
c = []
for i in range(1,renshu+1):
b.append(random.randint(1, qian))
for i in b:
c.append(int(i / sum(b) * qian))
return (c)
f = input("请输入红包金额:")
qian = int(f)
g = input("请输入抢红包的人数:")
renshu= int(g)
h = fun4(qian,renshu)
print(h)
请输入红包金额:100
请输入抢红包的人数:10
但是这样会发生最后加起来不是100,有偏差的问题,不知道该怎么
咕咕鸡鸽鸽
发表于 2019-3-6 13:45:23
看看
小贤啊哦
发表于 2020-5-6 13:22:12
import random
count=1
num=10
N=100
while count<11:
money=r.randint(1,N-num+1)
print("第%d个红包有%d元"%(count,money))
N-=money
num-=1
count+=1
小陨aoq
发表于 2020-8-1 18:20:18
听说微信红包的算法是:每人拿到的钱数 = (剩余总钱数 / 剩余红包个数) * 2 * 0-1的随机数
def hongBao(amount, num):
for i in range(num):
if num == 1:
gain = amount
else:
gain = int((amount / num) * 2 * random.random() + 1)
print(gain)
amount -= gain
num -= 1
z2x2c8
发表于 2020-8-2 02:36:46
看看答案
19971023
发表于 2020-8-9 15:18:48
1
aironeng
发表于 2020-12-8 09:03:50
学习