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)

页: 1 [2] 3 4
查看完整版本: Python:每日一题 96(答题领鱼币)