# Random Sampler

> JSONL 随机采样工具。读取 JSONL 数据集，按抽样数量或抽样比例无放回抽取样本，输出保留原字段结构的采样结果。 当用户提到随机采样、按数量抽样、按比例抽样、JSONL 抽样筛查等需求时使用此skill。 即使用户没有明确说出"random_sampler"，只要任务涉及对 JSONL 记录做无放回随机抽取，就应该使用此skill。 不负责分层采样、领域均衡采样、表格采样或其他格式转换。

- Skill: `cas-bigdatalab/random-sampler` (Agent Skill, multi-file: 4 files)
- Install (CLI): `npx skillmds@latest add cas-bigdatalab/random-sampler`
- Raw SKILL.md: https://api.skillmd.com/api/skills/cas-bigdatalab/random-sampler/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: cas-bigdatalab (https://skillmd.com/u/cas-bigdatalab)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/cas-bigdatalab/random-sampler

---


# Random Sampler 随机采样 Skill

## 功能概述

本 skill 面向 JSONL 数据集进行无放回随机采样，可按数量或按比例抽取样本，并支持随机种子保证结果可复现。
采样过程中保留原始 JSON 对象结构，不改动字段内容，适用于大批量语料抽样筛查、小样本人工核验、流程调试等场景。

## 触发条件

当用户请求以下任务时，应使用此 skill：
- 随机采样
- 按数量抽样
- 按比例抽样
- JSONL 抽样筛查

## 核心参数说明

### 必需参数

- `--input`：输入 JSONL 文件路径
- `--output`：输出 JSONL 文件路径
- `--method`：采样方式，支持 `count` 或 `ratio`

### 可选参数

- `--count`：采样数量，`method=count` 时使用
- `--ratio`：采样比例 0-1，`method=ratio` 时使用
- `--seed`：随机种子，默认 `42`
- `--log_file`：日志文件路径

## 输入文件格式

输入文件必须为 JSONL，每一行是一条独立 JSON 记录。

示例：
```jsonl
{"id": 1, "text": "sample a"}
{"id": 2, "text": "sample b"}
{"id": 3, "text": "sample c"}
```

## 使用方法

### 按数量采样
```bash
python scripts/run_random_sampler.py \
  --input data.jsonl \
  --output sampled.jsonl \
  --method count \
  --count 100 \
  --seed 42
```

### 按比例采样
```bash
python scripts/run_random_sampler.py \
  --input data.jsonl \
  --output sampled.jsonl \
  --method ratio \
  --ratio 0.1 \
  --seed 42
```

## 输出示例

```text
[OK] Random sampling completed
   Input: data.jsonl
   Output: sampled.jsonl
   Total records: 12
   Sampled records: 5
   Sampling rate: 41.67%
   Random seed: 42
```

## 环境要求

- Python 3.x
- 输入文件为有效 JSONL

## 注意事项

1. 采样是无放回的，每条记录最多被选中一次
2. 设置相同的种子可以得到相同的采样结果
3. 如果 `count` 或 `ratio` 超过总数，则返回全部数据

