# ====================== 配置区 ======================
total = 113.25   # 数量总和
price = 62     # 单价
max_diff = 1.5    # 数量最大相差 ≤1.5
allow_over = 3    # 仅允许 3 个金额超 1000 元
# ====================================================

import random
random.seed()

# 自动计算
max_normal_qty = 1000 / price  # 不超1000元的最大数量
count = 9                     # 固定9个数字
base = total / count
nums = []
used_values = set()
over_count = 0

# 生成前 8 个数字
for _ in range(count - 1):
    # 随机生成，范围紧凑保证差值合规
    if over_count < allow_over:
        # 生成超1000元的数量
        val = round(random.uniform(max_normal_qty + 0.1, max_normal_qty + 0.8), 2)
        over_count += 1
    else:
        # 生成不超1000元的数量
        val = round(random.uniform(base - 0.7, base + 0.7), 2)

    # 确保不重复
    while val in used_values:
        val = round(val + 0.01, 2)
    used_values.add(val)
    nums.append(val)

# 第9个数字自动补齐总和
last_num = round(total - sum(nums), 2)
while last_num in used_values:
    last_num += 0.01
last_num = round(last_num, 2)
nums.append(last_num)

# 最终校准总和
final_sum = sum(nums)
if abs(final_sum - total) > 0.001:
    nums[-1] = round(nums[-1] + total - final_sum, 2)

# 打乱顺序，彻底无规律
random.shuffle(nums)

# ===================== 输出 =====================
for num in nums:
    print(f"{num:.2f}")

# 校验输出
amounts = [round(x * price, 2) for x in nums]
print("\n===== 校验结果 =====")
print(f"✅ 数量总和：{sum(nums):.2f}")
print(f"✅ 超1000元个数：{len([a for a in amounts if a > 1000])}")
print(f"✅ 最大相差：{max(nums)-min(nums):.2f} ≤ 1.5")
print(f"✅ 无重复：{len(set(nums)) == len(nums)}")