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

将标量值列表划分为分布相似的等大小分组

如何将标量列表划分为K个等大小、分布相似的分组?

嘿,你的这个实现思路真的很棒!完全契合你“优先简洁性”的需求——这种轮询式分配排序后元素的方法,本质是一种简单高效的分层抽样思路,能很好地保证各组的分布相似性。

为什么这个方法有效?

先把所有值排序,相当于把数据按大小区间划分好,然后从最大(或最小)的元素开始,轮流分配到每个分组中。这样每个分组都会覆盖不同大小区间的元素,不会出现某组全是极值、某组全是中间值的情况,自然各组的分布就会高度相似。

你的伪代码实现(整理后)

sort values
create K empty groups: group_1, ... group_k
while values is not empty:
for group in groups:
group.add(values.pop())
if values is empty:
break

具体代码示例(Python)

这里给你写一个更落地的简洁实现,和你的伪代码逻辑完全一致:

def split_into_similar_groups(values, k):
    sorted_vals = sorted(values)
    groups = [[] for _ in range(k)]
    idx = len(sorted_vals) - 1  # 从末尾开始取,对应pop()的逻辑
    while idx >= 0:
        for group in groups:
            if idx < 0:
                break
            group.append(sorted_vals[idx])
            idx -= 1
    return groups

举个实际例子:如果输入是[1,2,3,4,5,6,7,8],k=2,运行后会得到两组[8,6,4,2]和[7,5,3,1],两组的均值都是5,分布几乎完全一致。

另外,当总元素数不能被K整除时,这个逻辑也能自动处理——最后剩下的几个元素会依次加到前面的分组里,分组大小最多相差1,完全不影响整体分布的相似性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:44:01