gpt4 book ai didi

php - 生成数组所有版本的算法,可能的权重分配为 0-100

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:11:50 24 4
gpt4 key购买 nike

我有一个以下数组(php):

[
[id=>1,weight=]
[id=>2,weight=]
[id=>3,weight=]
[id=>4,weight=]
]

我需要创建此数组的所有可能版本,为每个 item['weight'] 分配 0-100 权重,步长为 N。

不知道这类问题怎么称呼。它不是排列/组合。

假设 N 是 10,我的目标是:

[
[
[id=>1,weight=10]
[id=>2,weight=10]
[id=>3,weight=10]
[id=>4,weight=70]
]
[
[id=>1,weight=10]
[id=>2,weight=10]
[id=>3,weight=20]
[id=>4,weight=60]
]
[
[id=>1,weight=10]
[id=>2,weight=10]
[id=>3,weight=30]
[id=>4,weight=50]
]
[
[id=>1,weight=10]
[id=>2,weight=10]
[id=>3,weight=40]
[id=>4,weight=40]
]
...all possible combination of weights for id=x.
[
[id=>1,weight=70]
[id=>2,weight=10]
[id=>3,weight=10]
[id=>4,weight=10]
]
]

同一层数组中 4 个 item['weights'] 的总和始终为 100(或 0.1)。在父数组中,对于 id=x,我有 10-100 的所有可能的权重组合。

最佳答案

这个问题有时被描述为将相同的球分配到不同的容器中。你没有准确说明你的问题,所以我会在这里猜测,但逻辑是相同的。

我假设您将 b = N/step 球分配到 4 个箱子中。

将球想象成一排,然后使用 3 个条将球分成 4 个箱子:*|||*****.

如果 N=10 并且您分配 100 分,上面的示例是相同的 30, 20, 0, 50。如果不允许零,您可以将分配的数量减少 4*b并假设每个 bin 以 N/step 开头(因此您正在分配剩余的点)。

执行此操作的方法数是选择(球 + 箱 - 1,箱 - 1)。

关于php - 生成数组所有版本的算法,可能的权重分配为 0-100,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47619382/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com