npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@lazy-random/generators-seedrandom

v2.0.1

Published

基於 seedrandom 的可設定種子 (Seedable) 亂數產生器 (Random Number Generator)

Readme

@lazy-random/generators-seedrandom

基於 seedrandom 的可設定種子 (Seedable) 亂數產生器 (Random Number Generator),隸屬 @lazy-random 系列套件。

本套件以 RNGSeedRandom 類別包裝 seedrandom,繼承自 @lazy-random/generators-function 的 RNGFunction,除了一般的種子亂數之外,也可切換 seedrandom 內建的多種擬隨機演算法 (PRNG Algorithm)。

特色 (Features)

  • 支援以任意字串、數字或函式作為種子 (Seed),可重複重現的亂數序列 (Reproducible Sequence)
  • 可切換 seedrandom 內建演算法:alea、tychei、xor128、xor4096、xorshift7、xorwow
  • 亦可傳入 seedrandom/lib/ 下的其他演算法名稱字串
  • 預設啟用平台熵值 (Entropy),讓未指定種子時仍能取得非固定序列
  • 可讀取/還原內部狀態 (State),並支援 clone() 複製實例
  • 同時提供 CommonJS (dist/index.cjs) 與 ECMAScript Module (dist/index.esm.mjs) 兩種輸出,並附帶型別宣告 (dist/index.d.ts)

安裝 (Installation)

yarn add @lazy-random/generators-seedrandom
yarn-tool add @lazy-random/generators-seedrandom
yt add @lazy-random/generators-seedrandom

使用方式 (Usage)

基本用法:

import RNGSeedRandom from '@lazy-random/generators-seedrandom'

const rng = new RNGSeedRandom('my seed')

console.log(rng.name) // 'seedrandom'

指定 seedrandom 內建演算法,建議使用 createLib(),其參數順序為 (lib, seed, opts):

import { RNGSeedRandom } from '@lazy-random/generators-seedrandom'

const rng = RNGSeedRandom.createLib('alea', 'my seed')

console.log(rng.name)

直接以建構子建立時,演算法名稱 (Library Name) 為第三個參數:

import { RNGSeedRandom } from '@lazy-random/generators-seedrandom'

const rng = new RNGSeedRandom('my seed', undefined, 'xor128')

重新指定種子 (Reseed):

rng.seed('another seed')

API 文件 (API Documentation)

class RNGSeedRandom

繼承自 RNGFunction<ISeedRandomPRNG>,內部以 seedrandom 產生擬隨機數列 (Pseudorandom Sequence)。

constructor(seed?, opts?, lib?, ...argv)

| 參數 (Parameter) | 型別 (Type) | 說明 (Description) | | --- | --- | --- | | seed | any | 種子 (Seed),可省略 | | opts | IRNGSeedRandomOptions | 傳給 seedrandom 的選項 (Options),即 seedrandom(seed, opts) 的第二個參數 | | lib | IRNGSeedRandomLib | 演算法名稱字串或函式;省略時使用 seedrandom 預設演算法 | | ...argv | any[] | 其餘參數,原樣轉交基類 (Forwarded to the base class) |

static createLib(lib?, seed?, opts?, ...argv): RNGSeedRandom

以「演算法在最前」的參數順序建立實例,內部會重新排列為建構子的 (seed, opts, lib) 順序。

static create(seed?, opts?, lib?, ...argv): RNGSeedRandom

與 new RNGSeedRandom(...) 等價的靜態工厂方法 (Static Factory Method)。

get name(): string

回傳產生器名稱 (Generator Name),格式為 seedrandom,若指定了演算法則附加 :<演算法> 後綴。

get options(): IRNGSeedRandomOptions

回傳目前生效的 seedrandom 選項 (Options)。

get state(): IRNGSeedRandomState | undefined

回傳 seedrandom 的內部狀態 (Internal State),僅在選項 state: true 時有值,否則回傳 undefined。

seed(seed?, opts?, ...argv): void

重新指定種子並重建亂數序列。傳入 opts === null 會清除既有選項(_opts 設為 undefined,待下一次 _init() 才重新套用 defaultOptions);傳入其他假值 (Falsy) 則沿用現有選項,真值 (Truthy) 才覆寫。

clone(seed?, opts?, ...argv): RNGSeedRandom

以目前實例的設定複製出新的 RNGSeedRandom。

defaultOptions: IRNGSeedRandomOptions

以 Object.freeze 凍結的預設選項,內容為 { entropy: true },於 _init() 時套用。

型別 (Types)

| 型別 (Type) | 說明 (Description) | | --- | --- | | IRNGSeedRandomOptions | seedrandom 函式第二個參數的型別,由 Parameters<typeof seedrandom>[1] 推導 | | ISeedRandomPRNG | seedrandom 回傳的擬隨機數列產生器 (PRNG),即 seedrandom.PRNG | | IRNGSeedRandomLibName | seedrandom 內建演算法名稱:'alea' \| 'tychei' \| 'xor128' \| 'xor4096' \| 'xorshift7' \| 'xorwow' | | IRNGSeedRandomLib | 演算法名稱字串的聯合型別 (Union Type),允許任何字串 | | IRNGSeedRandomState | 內部狀態結構:i、j 索引 (Index) 與洗牌後的記憶池 S (Shuffled Pool) | | IRNGSeedRandomGenerator | 可呼叫的亂數來源函式 (Callable Random Source) |

設定 (Configuration)

seedrandom 選項會於 _init() 時以 defaultOptions({ entropy: true })作為基底,並可於建構子或 seed() 呼叫時覆寫:

import { RNGSeedRandom, defaultOptions } from '@lazy-random/generators-seedrandom'

console.log(defaultOptions) // Object { entropy: true }

const rng = new RNGSeedRandom('my seed', { entropy: false, state: true })
console.log(rng.state)

開發 (Development)

專案根目錄使用 pnpm + lerna 的 monorepo 結構,本套件常見指令:

pnpm run build   # 以 tsdx 建置 dist,並輸出型別宣告
pnpm run test    # 執行測試
pnpm run lint    # 執行 ESLint

變更日誌 (Changelog)

請見 CHANGELOG.md。

相關資源 (Related Resources)