UNPKG

yurandom

Version:

Deterministic seed-based random generator using Xoroshiro128+. Useful for avatars, testing, procedural content, and more.

77 lines (57 loc) โ€ข 2.92 kB
## yurandom A deterministic, seed-based pseudo-random generator powered by Xoroshiro128+, with zero dependencies. ### ๐Ÿ“ฆ Features - ๐Ÿ” Deterministic output โ€” same seed always gives same result - โšก Lightweight and fast โ€” no dependencies - ๐Ÿ› ๏ธ Includes common utilities: pick, shuffle, color, uuid, date, etc. - ๐Ÿงช Ideal for testing, generation, and reproducible randomness ### ๐Ÿš€ Installation ```bash bun add yurandom # or npm install yurandom # or pnpm add yurandom ``` ### โœ… Usage ```js import { Yurandom } from "yurandom"; const rng = new Yurandom("uwu"); rng.random(); // 0.72183... rng.int(1, 10); // 7 rng.pick(["a", "b", "c"]); // "b" rng.bool(); // true or false rng.uuid(); // deterministic UUID rng.pastel(); // "hsl(125, 70%, 85%)" ``` ### ๐Ÿ“˜ API | Method | Description | | ----------------------- | -------------------------------------------- | | `random()` | Float between 0 and 1 | | `int(min, max)` | Integer between min and max (inclusive) | | `bool()` | Boolean (`true` or `false`) | | `pick(arr)` | Pick one item from array | | `shuffle(arr)` | Shuffle array (non-mutating) | | `pastel()` | Random pastel HSL color | | `range(n, min, max)` | Array of `n` integers between min and max | | `uuid()` | UUID-like deterministic string | | `date(start, end)` | Random date between start and end | | `weighted([[x,w],...])` | Pick based on weight | | `string(len, charset)` | Random string | | `hex(bytes)` | Hex string of given byte length | | `color(format)` | Random color in `"hex"`, `"rgb"`, or `"hsl"` | ### ๐ŸŽฏ Real World Use Cases - **Avatar generators**: Create unique, consistent visuals (e.g., Dicebear-style avatars) from usernames or IDs. - **Game development**: Reproduce map layouts, item drops, or enemy patterns based on a seed. - **Testing tools**: Generate deterministic mock data for snapshot testing or simulations. - **User personalization**: Assign consistent themes, colors, or avatars to users without storing preferences. - **Fuzz testing**: Create predictable test variations with controlled randomness. - **Data generation**: Populate dev/staging environments with repeatable random data. ### ๐Ÿ”’ Deterministic by Design All randomness is based on your input seed and powered by [Xoroshiro128+](https://prng.di.unimi.it/xoroshiro128plus.c). This makes it ideal for reproducible tasks. ### ๐Ÿงช Run Tests ```bash bun test ``` ### ๐Ÿ“„ License [MIT](./LICENSE) โ€“ free for personal and commercial use.