You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

寻找可基于离散分布拆分整数的Python库或函数

整数按离散分布拆分的Python实现方案
  • 目前numpy、scipy官方没有提供直接适配该需求的现成函数,你需要的功能属于整数配额分配场景,主流实现分为两类:原生轻量实现、第三方库扩展实现

原生轻量实现(无需额外安装依赖,工业界最常用)

核心逻辑是先按比例计算向下取整的基础分配值,再把余数按权重优先级分配,保证结果总和完全匹配输入值,示例代码如下:

import numpy as np

def split_integer_by_dist(n: int, dist: list[float]) -> list[int]:
    # 计算基础分配值
    base = np.floor(np.array(dist) * n).astype(int)
    remainder = int(n - base.sum())
    # 按权重从高到低排序,余数依次分配给优先级最高的位置
    priority = np.argsort(-np.array(dist))
    for i in range(remainder):
        base[priority[i]] += 1
    return base.tolist()

可直接测试你给出的示例场景:

  • 输入split_integer_by_dist(10, [0.2,0.3,0.5]) 输出 [2, 3, 5]
  • 输入split_integer_by_dist(14, [0.2,0.3,0.5]) 输出 [3, 4, 7]
  • 输入split_integer_by_dist(1, [0.2,0.3,0.5]) 输出 [0, 0, 1]
    完全匹配你给出的预期结果。

第三方库实现

如果需要支持更复杂的分配规则(比如随机余数分配、分配结果上下限约束),可以使用optbinning库的IntegerAllocator工具,该库是信用风控领域常用的成熟分配工具,支持按自定义分布做整数分配,满足总和约束要求。

内容的提问来源于stack exchange,提问作者Suba Selvandran

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 00:54:02