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

Python实现:生成m个无差别物品到n个无差别容器的唯一分配方案

问题:无差别物品分配到无差别容器的唯一实例生成

需求说明

  • 开发概率计算器时,需要解决的核心问题:生成m个无差别物品放入n个无差别容器的所有唯一分配实例
  • 实例参考:4个物品、3个容器的唯一分配方式为:(4, 0, 0)、(3, 1, 0)、(2, 2, 0)、(2, 1, 1)
  • 去重规则:由于物品和容器均无差别,(0, 4, 0)这类排列与(4, 0, 0)属于同一分配情况,需排除重复项

生成结果的用途

生成的分配实例需作为以下概率计算函数的输入参数:

def get_p_win(*args: tuple) -> float:
    probability_of_loss = 1
    for i in args:
        probability_of_loss *= (1-i[0] / i[1])
    return (1 - probability_of_loss) * 100
  • 输入示例:get_p_win((4, 200), (0, 200), (0, 200))
  • 示例含义:计算3次抽奖的获胜概率,假设每次抽奖有200个参与名额,仅第一次抽奖分配了4个我方名额

当前实现代码

最初毫无思路,经建议后已完成可用代码(需导入itertools库才能运行):

import itertools as it

def test_strategies(entries: int, draws: int):
    l = it.combinations_with_replacement(range(entries+1), draws)
    for i in l:
        total = 0
        for index in range(draws):
            total += i[index]
        if total == entries:
            print(i)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 18:37:12