# ====================== 配置区 ======================
total =  101.8   # 数量总和
price = 65.5      # 单价
max_diff = 2    # 强制 ≤2
allow_over = 3    # 仅允许 3 个金额超 1000 元
# ====================================================

import random
random.seed()

max_normal_qty = 1000 / price
count = 7
base = total / count
nums = []
used_values = set()
over_count = 0

# ================== 你的原版代码 完全不动 ==================
for _ in range(count - 1):
    if over_count < allow_over:
        val = round(random.uniform(max_normal_qty + 0.1, max_normal_qty + 0.8), 2)
        over_count += 1
    else:
        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)

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)

# ================== 我只加这一段：强制差值 ≤2 ==================
# 自动修正所有数字，确保最大差值不超过2
current_min = min(nums)
current_max = max(nums)
while current_max - current_min > 2:
    nums = [round(base + (x - base) * 0.9, 2) for x in nums]
    nums[-1] = round(total - sum(nums[:-1]), 2)
    current_min = min(nums)
    current_max = max(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} ≤ 2")
print(f"无重复：{len(set(nums)) == len(nums)}")