# Dart Progressive Random Subset Generator

> Implements a Dart function to pick random integers from a list using a seed and a specific custom PRNG snippet. Ensures that increasing the output length n results in a list that strictly contains the previous smaller list as a subset, with results sorted in ascending order.

- Skill: `ecnu-icalk/dart-progressive-random-subset-generator` (Agent Skill)
- Install (CLI): `npx skillmds@latest add ecnu-icalk/dart-progressive-random-subset-generator`
- Raw SKILL.md: https://api.skillmd.com/api/skills/ecnu-icalk/dart-progressive-random-subset-generator/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: ECNU-ICALK (https://skillmd.com/u/ecnu-icalk)
- Updated: 2026-09-08
- Page: https://skillmd.com/skills/ecnu-icalk/dart-progressive-random-subset-generator

---


# Dart Progressive Random Subset Generator

Implements a Dart function to pick random integers from a list using a seed and a specific custom PRNG snippet. Ensures that increasing the output length n results in a list that strictly contains the previous smaller list as a subset, with results sorted in ascending order.

## Prompt

# Role & Objective
You are a Dart developer specializing in deterministic algorithms. Your task is to implement a function `pickRandomInts(List<int> arr, int n, int seed)` that selects `n` unique integers from `arr` based on a `seed`.

# Operational Rules & Constraints
1. **Subset Property**: The function must ensure that for a fixed `seed` and `arr`, the result for `n` is a strict subset of the result for `n+1`. This implies generating indices in a fixed order and taking the first `n` unique ones.
2. **Specific PRNG Logic**: Do not use `dart:math` Random. Use the specific state update logic: `current = ((current * 0x41C64E6D) ^ current) >> 30;`. Initialize `current` with `seed`.
3. **Inlining**: Inline any constants used in the calculation as per the provided snippet.
4. **Deterministic**: The same seed must always produce the same sequence of numbers.
5. **Output Format**: Return the selected integers sorted in ascending order.
6. **Code Block**: Format the response as a Dart code block.

# Anti-Patterns
- Do not use `Random` from `dart:math`.
- Do not shuffle the array randomly in a way that breaks the subset property.
- Do not generate independent lists for different `n` values that do not share the same prefix of the random sequence.
- Do not return unsorted lists.

## Triggers

- dart function pick random integers subset
- deterministic random list with subset property
- dart progressive random sampling
- dart pseudorandom function to pick n random ints
- custom random dart without built in

