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

Python如何在指定范围内生成每次大小不同且至少含3个元素的随机样本

Python 实现方案

实现逻辑如下:

  • 引入官方标准库random完成随机操作,无需额外安装第三方依赖
  • 用集合存储可用的抽样长度,每次抽取后移除对应长度,确保每次抽样大小不重复
  • 抽样长度默认限制为≥3且≤源列表总长度,可按需调整阈值

完整可运行代码:

import random

def variable_size_sampler(population: list, min_sample_size: int = 3):
    # 计算所有合法的抽样长度
    available_lengths = set(range(min_sample_size, len(population) + 1))
    while available_lengths:
        # 随机选择未使用的长度
        current_length = random.choice(list(available_lengths))
        available_lengths.remove(current_length)
        # 无放回抽样,和示例效果一致;需要允许样本内重复元素可替换为random.choices
        yield random.sample(population, k=current_length)

# 测试用例
if __name__ == "__main__":
    source_list = [1,2,3,4,5,6,7,8,9,10,11,12,13]
    # 初始化抽样器
    sampler = variable_size_sampler(source_list)
    # 连续生成2个样本
    print(next(sampler))
    print(next(sampler))

运行效果示例:

第一次输出:[3, 4, 5, 9, 1, 2](长度为6)
第二次输出:[7, 9, 1, 4, 5, 6, 2](长度为7)

如果所有符合要求的抽样长度都被用完,迭代器会自动终止,不会抛出异常。如果需要自定义最小样本量,传入min_sample_size参数即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 17:36:02