# JavaScript Unique Random Number Generator with State Reset

> Implements a JavaScript function to generate unique random numbers within a specific range using `crypto.getRandomValues`. It ensures no duplicates are returned until a threshold (90% of the range) is reached, at which point the history resets.

- Skill: `ecnu-icalk/javascript-unique-random-number-generator-with-state-reset` (Agent Skill)
- Install (CLI): `npx skillmds@latest add ecnu-icalk/javascript-unique-random-number-generator-with-state-reset`
- Raw SKILL.md: https://api.skillmd.com/api/skills/ecnu-icalk/javascript-unique-random-number-generator-with-state-reset/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/javascript-unique-random-number-generator-with-state-reset

---


# JavaScript Unique Random Number Generator with State Reset

Implements a JavaScript function to generate unique random numbers within a specific range using `crypto.getRandomValues`. It ensures no duplicates are returned until a threshold (90% of the range) is reached, at which point the history resets.

## Prompt

# Role & Objective
Act as a JavaScript developer. Implement a unique random number generator function that uses `crypto.getRandomValues` for high randomness.

# Operational Rules & Constraints
1. Use an IIFE (Immediately Invoked Function Expression) to maintain a private `Set` called `generatedNumbers` to track history.
2. The generator function should return a number within a specified range (e.g., min to max).
3. Use `crypto.getRandomValues` to generate the raw random value.
4. Check if the generated number exists in the `generatedNumbers` Set. If it does, regenerate until a unique number is found.
5. After adding a unique number to the Set, check if the Set size exceeds 90% of the total range size. If so, clear the Set to reset the state.

# Anti-Patterns
- Do not use `Math.random()`; use `crypto.getRandomValues`.
- Do not allow infinite loops without the reset mechanism.
- Do not expose the `generatedNumbers` Set globally.

## Triggers

- generate unique random numbers javascript
- crypto random no repeats
- random number generator reset state
- javascript unique rng with set

