1. 程式人生 > >100元隨機分給10個人 最多20 最少0.01

100元隨機分給10個人 最多20 最少0.01

# encoding:utf-8
import random
"將問題分解成兩步:先生成10個隨機紅包,再隨機發給10個人的問題。這樣演算法就集中在第一步上。"
"每生成一個紅包,計算剩餘金額給剩下的人發,最多能發多少,如果大於12以12算,最少能發多少;如果小於6以6計算。生成一個最大於最小之間的隨機數。最後一個人的紅包則是總額的餘額。"
# random.uniform(a, b),用於生成一個指定範圍內的隨機符點數,兩個引數其中一個是上限,一個是下限
def share_money(total, count, max_money, min_money):
    array = []
    total_rest = total
    for 
i in range(1, count):
#    如果剩下的都是最小值,則此次隨機最大的數
        new_max = min(total_rest - (count - i) * min_money, max_money)
#    如果剩下的都是最大值,則此次隨機最小的數
new_min = max(total_rest - (count - i) * max_money, min_money)
#    我們每次產生的數介於這兩個數之間
money = round(random.uniform(new_min, new_max), 2) total_rest -= money array.append(money) array.append(round
(total_rest,2)) print(array)if __name__ == '__main__': share_money(100,10,20,0.01)