# Tane 種 — Seeded random numbers for JavaScript > Tane 種 — Seeded random numbers for JavaScript: reproducible streams, shuffle, pick, sample, weighted choice, daily seeds and saved positions. Zero dependencies. Install with `npm install @johnmorrisdotca/tane`. Every page below is also an HTML page at the same address ending in .html; the documentation's home is https://johnmorrisdotca.github.io/tane/docs/. The examples on the reference pages are run when the site is built, and what they print is shown under them. ## Guides - [Getting started](https://johnmorrisdotca.github.io/tane/docs/guides/getting-started.md): Install Tane and reproduce the same sequence from one seed. - [Shuffle, pick and weight choices](https://johnmorrisdotca.github.io/tane/docs/guides/shuffle-and-pick.md): Shuffle, pick, sample and weight with the right function, and keep draws predictable. - [Keep features on separate streams](https://johnmorrisdotca.github.io/tane/docs/guides/sub-streams.md): Give each feature its own sequence so adding one never changes another. - [Make a daily puzzle](https://johnmorrisdotca.github.io/tane/docs/guides/daily-seeds.md): Make a daily puzzle from a calendar day in UTC or a chosen time zone, and map seeds back to dates. - [Save and resume a stream](https://johnmorrisdotca.github.io/tane/docs/guides/save-and-resume.md): Count draws, save a position as JSON, text or CSV, and resume from it. - [Embed a picker and use hooks](https://johnmorrisdotca.github.io/tane/docs/guides/embed-and-hooks.md): Put the picker element on a page, decide what a shared link reveals, and use the React hooks. - [Engine and compatibility](https://johnmorrisdotca.github.io/tane/docs/guides/engine-design.md): See the small state of the generator, why the sequence is part of the contract, and what it is not for. - [Seed normalization and reserved ranges](https://johnmorrisdotca.github.io/tane/docs/guides/seed-ranges.md): Normalise seeds, tell a sequence seed from a distributable one, and reserve blocks. - [Troubleshooting & FAQ](https://johnmorrisdotca.github.io/tane/docs/guides/troubleshooting.md): Find out why a sequence changed, a read returns null, a call throws or a React value is stale. - [Upgrading and coming from other generators](https://johnmorrisdotca.github.io/tane/docs/guides/upgrading.md): Stay on version 1 and move from another generator without changing existing results. ## Reference - [@johnmorrisdotca/tane/react](https://johnmorrisdotca.github.io/tane/docs/api/react/index.md): React hooks - [@johnmorrisdotca/tane/element](https://johnmorrisdotca.github.io/tane/docs/api/element/index.md): Picker element - [@johnmorrisdotca/tane/element/define](https://johnmorrisdotca.github.io/tane/docs/api/element-define/index.md): Register the picker - [@johnmorrisdotca/tane](https://johnmorrisdotca.github.io/tane/docs/api/main/index.md): Tane 種: seeded random numbers and daily seeds. ## Optional - [Changelog](https://johnmorrisdotca.github.io/tane/docs/changelog.md): every release - [Every export, in full](https://johnmorrisdotca.github.io/tane/llms-full.txt) - [Source](https://github.com/johnmorrisdotca/tane)