# Randomly

> A library of 63 random generators — numbers, words, equations, patterns, images and sound — seeded from 10 real-world entropy sources, with a free, keyless HTTP API. Every result carries a receipt naming the physical source of its randomness and linking to third-party proof, and every result replays bit-for-bit from its own URL.

Most random tools call `rand()` and move on. Here the *source* is the product: a draw
might come from vacuum fluctuations measured in Canberra, from atmospheric noise sampled
in Dublin, from the NIST beacon, from a Bitcoin block hash, or from an earthquake the
USGS recorded forty minutes ago — and the receipt says which, with a link you can check.

Sources are classified honestly: **A** cryptographic, **B** public beacon (unpredictable
until published, public forever after), **C** observational (tens of bits of genuine
surprise, flavour rather than cryptography). B and C are *always* mixed with fresh OS
CSPRNG bytes before anything is generated, and the receipt states that too. If you need a
secret, ask for Class A.

There is no database and there are no accounts. A result's 26-character token *is* its
seed, so a permalink recomputes the result instead of looking it up.

## Start here

- [API contract](https://randomly.cluxnei.dev/api.md): every endpoint, parameter, format and error code. Free, keyless, 60 requests a minute per IP.
- [Everything in one file](https://randomly.cluxnei.dev/llms-full.txt): the contract plus all 63 generators with their parameters and all 10 entropy sources.
- [Catalogue as JSON](https://randomly.cluxnei.dev/api/v1/generators): the machine-readable registry — every generator's declared parameters, defaults and bounds.
- [Entropy sources as JSON](https://randomly.cluxnei.dev/api/v1/sources): live status, class and current value of each source.

## Try it without reading anything

- [`curl -s 'https://randomly.cluxnei.dev/api/v1/g/numbers.integers?count=6&min=1&max=60&unique=1' -H 'Accept: text/plain'`](https://randomly.cluxnei.dev/api/v1/g/numbers.integers?count=6&min=1&max=60&unique=1): six numbers and nothing else. Drop the header for the full JSON envelope with the receipt.

## Numbers

Integers, distributions, dice and the points on a sphere everyone gets wrong.

- [`numbers.integers`](https://randomly.cluxnei.dev/g/numbers/integers.md): Whole numbers in any range, drawn without the bias everyone else ships.
- [`numbers.dice`](https://randomly.cluxnei.dev/g/numbers/dice.md): Full dice notation, rolled without the bias a modulo would introduce.
- [`numbers.gaussian`](https://randomly.cluxnei.dev/g/numbers/gaussian.md): The normal distribution by Box–Muller, plotted as you draw it.
- [`numbers.distribution`](https://randomly.cluxnei.dev/g/numbers/distribution.md): Poisson, Pareto, Zipf, Beta, Cauchy — sampled and plotted.
- [`numbers.decimals`](https://randomly.cluxnei.dev/g/numbers/decimals.md): Floats in a range, at a precision you choose.
- [`numbers.coordinates`](https://randomly.cluxnei.dev/g/numbers/coordinates.md): Uniform on a sphere — not the latitude bug everyone ships.
- [`numbers.lottery`](https://randomly.cluxnei.dev/g/numbers/lottery.md): Mega-Sena, Powerball and EuroMillions — with the odds printed on them.
- [`numbers.coin`](https://randomly.cluxnei.dev/g/numbers/coin.md): Biased or fair, showing the longest run against the expected log₂ n.
- [`numbers.uuid`](https://randomly.cluxnei.dev/g/numbers/uuid.md): UUID v4 and v7, ULID, NanoID — and what each one gives away.
- [`numbers.password`](https://randomly.cluxnei.dev/g/numbers/password.md): Random characters, with the entropy stated in bits instead of a green bar.
- [`numbers.bytes`](https://randomly.cluxnei.dev/g/numbers/bytes.md): The entropy itself, in hex, base64 or binary.
- [`numbers.prime`](https://randomly.cluxnei.dev/g/numbers/prime.md): Miller–Rabin, forty rounds, at the bit width you ask for.
- [`numbers.timestamp`](https://randomly.cluxnei.dev/g/numbers/timestamp.md): A random instant inside a window you define.

## Words

Passphrases with real entropy, and words that never existed.

- [`words.passphrase`](https://randomly.cluxnei.dev/g/words/passphrase.md): 12.9 bits per word, from a list of 7,776 — and zero for the capital letters.
- [`words.pseudo`](https://randomly.cluxnei.dev/g/words/pseudo.md): Order-n Markov chains over real vocabulary — noise at 2, plagiarism at 4.
- [`words.syllabic`](https://randomly.cluxnei.dev/g/words/syllabic.md): Syllable grammars rather than a list lookup — elvish, nordic, latin, brand.
- [`words.brand`](https://randomly.cluxnei.dev/g/words/brand.md): Two open syllables and a plausible domain — no registrar was consulted.
- [`words.lorem`](https://randomly.cluxnei.dev/g/words/lorem.md): Sentence lengths drawn log-normally, so it reads like prose and not like a list.
- [`words.article`](https://randomly.cluxnei.dev/g/words/article.md): A Wikipedia summary you would never have gone looking for.
- [`words.species`](https://randomly.cluxnei.dev/g/words/species.md): A real species drawn from GBIF — twenty million names, one of them yours.
- [`words.related`](https://randomly.cluxnei.dev/g/words/related.md): Means-like, rhymes-with and sounds-like, via Datamuse.
- [`words.identity`](https://randomly.cluxnei.dev/g/words/identity.md): Names that hold together across a nationality.

## Equations

Problems with clean answers, built backwards from the solution.

- [`equations.arithmetic`](https://randomly.cluxnei.dev/g/equations/arithmetic.md): Drills at a digit count and operation set you pick, and division always comes out even.
- [`equations.expression`](https://randomly.cluxnei.dev/g/equations/expression.md): A probabilistic grammar grows the expression; you get the tree it grew from too.
- [`equations.linear`](https://randomly.cluxnei.dev/g/equations/linear.md): Built root-first, so the answer is always clean and never needs checking.
- [`equations.quadratic`](https://randomly.cluxnei.dev/g/equations/quadratic.md): Integer, rational or surd roots — built from the roots, so they factor.
- [`equations.system`](https://randomly.cluxnei.dev/g/equations/system.md): 2×2 and 3×3, guaranteed to have one solution and to reach it without fractions.
- [`equations.calculus`](https://randomly.cluxnei.dev/g/equations/calculus.md): Derivatives and integrals per rule — the integrals exist because they were built backwards.
- [`equations.matrix`](https://randomly.cluxnei.dev/g/equations/matrix.md): Any, invertible, symmetric or positive-definite — constructed, not rejection-sampled.
- [`equations.identity`](https://randomly.cluxnei.dev/g/equations/identity.md): A real identity — half of them subtly broken. You guess; the verdict is checked, not assumed.
- [`equations.sequence`](https://randomly.cluxnei.dev/g/equations/sequence.md): Arithmetic, geometric, quadratic or Fibonacci-like — with enough terms to be unambiguous.

## Patterns

Noise, growth and decay — Perlin, Gray-Scott, cellular automata.

- [`patterns.perlin`](https://randomly.cluxnei.dev/g/patterns/perlin.md): Gradient noise, stacked into fractals and folded through itself.
- [`patterns.simplex`](https://randomly.cluxnei.dev/g/patterns/simplex.md): Fewer directional artefacts, cheaper in higher dimensions.
- [`patterns.worley`](https://randomly.cluxnei.dev/g/patterns/worley.md): Distance to the nth-nearest feature point.
- [`patterns.spectral`](https://randomly.cluxnei.dev/g/patterns/spectral.md): 1/f^β synthesised in the frequency domain.
- [`patterns.automaton`](https://randomly.cluxnei.dev/g/patterns/automaton.md): All 256 rules, including the one that is a PRNG.
- [`patterns.life`](https://randomly.cluxnei.dev/g/patterns/life.md): Conway from a random soup, with a density control.
- [`patterns.reaction`](https://randomly.cluxnei.dev/g/patterns/reaction.md): Gray–Scott, run until the pattern stops moving.
- [`patterns.truchet`](https://randomly.cluxnei.dev/g/patterns/truchet.md): Random tile orientation. Instant beauty, ten lines of code.
- [`patterns.poisson`](https://randomly.cluxnei.dev/g/patterns/poisson.md): Poisson-disk beside uniform random — the difference is the lesson.
- [`patterns.voronoi`](https://randomly.cluxnei.dev/g/patterns/voronoi.md): Cells from random sites, coloured so no two neighbours match.
- [`patterns.maze`](https://randomly.cluxnei.dev/g/patterns/maze.md): DFS, Kruskal and Wilson side by side — algorithm as bias.
- [`patterns.lsystem`](https://randomly.cluxnei.dev/g/patterns/lsystem.md): Stochastic rewrite rules: plants, snowflakes, dragon curves.
- [`patterns.wfc`](https://randomly.cluxnei.dev/g/patterns/wfc.md): Overlapping model, min-entropy heuristic, backtracking.
- [`patterns.walk`](https://randomly.cluxnei.dev/g/patterns/walk.md): Brownian, self-avoiding and Lévy — the fat tail is visible.
- [`patterns.dla`](https://randomly.cluxnei.dev/g/patterns/dla.md): Dendritic crystals, grown one sticky particle at a time.

## Images

Flow fields, superformula blobs, perceptual palettes, real art.

- [`images.flowfield`](https://randomly.cluxnei.dev/g/images/flowfield.md): Thousands of particles advected through fractal noise.
- [`images.blob`](https://randomly.cluxnei.dev/g/images/blob.md): One equation: starfish, gears, leaves, sea urchins.
- [`images.identicon`](https://randomly.cluxnei.dev/g/images/identicon.md): A deterministic avatar from a hash. Same input, same face.
- [`images.circles`](https://randomly.cluxnei.dev/g/images/circles.md): Grow until collision, keep what fits.
- [`images.mondrian`](https://randomly.cluxnei.dev/g/images/mondrian.md): Recursive subdivision, split at U(0.3, 0.7).
- [`images.gradient`](https://randomly.cluxnei.dev/g/images/gradient.md): Random control points, dithered to kill the banding.
- [`images.spray`](https://randomly.cluxnei.dev/g/images/spray.md): A Gaussian mixture with k random components.
- [`images.tiles`](https://randomly.cluxnei.dev/g/images/tiles.md): A random glyph and rotation per cell.
- [`images.strata`](https://randomly.cluxnei.dev/g/images/strata.md): Band heights from a Dirichlet draw, colours walking a palette.

## Audio

Noise colours, Euclidean rhythms and strings plucked out of static.

- [`audio.noise`](https://randomly.cluxnei.dev/g/audio/noise.md): White, pink, brown, blue, violet — and perceptually flat grey.
- [`audio.rhythm`](https://randomly.cluxnei.dev/g/audio/rhythm.md): k onsets spread as evenly as possible across n steps — which is most of the world’s rhythms.
- [`audio.melody`](https://randomly.cluxnei.dev/g/audio/melody.md): Random walk, Markov, or the 1/f kind that sounds written — on a scale that cannot clash.
- [`audio.pluck`](https://randomly.cluxnei.dev/g/audio/pluck.md): Karplus–Strong: fill a delay line with pure noise and a guitar comes out.
- [`audio.chord`](https://randomly.cluxnei.dev/g/audio/chord.md): A functional-harmony transition matrix, not a random draw — so it sounds written.
- [`audio.drone`](https://randomly.cluxnei.dev/g/audio/drone.md): Detuned partials, beating slowly against each other.
- [`audio.bleep`](https://randomly.cluxnei.dev/g/audio/bleep.md): Success, error, notify, coin — as a downloadable pack.
- [`audio.ambient`](https://randomly.cluxnei.dev/g/audio/ambient.md): A mood preset that evolves and never repeats.

## Pages

- [Library](https://randomly.cluxnei.dev/library): all 63 generators as a filterable catalogue.
- [Entropy](https://randomly.cluxnei.dev/entropy): the 10 sources, live, with what each is honestly worth.
- [Credits](https://randomly.cluxnei.dev/credits): every source, corpus and licence this stands on. Free does not mean uncredited.

## Optional

- [Source code](https://github.com/Cluxnei/randomly): Laravel, PHP, Blade, Alpine and Tailwind. The specification the project was built from lives in `docs/`.
