100元隨機分給10個人 最多20 最少0.01
阿新 • • 發佈:2019-01-03
# 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 fori 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