options list required Comma-separated options to pick from: 1–100 items, each at most 100 characters. Whitespace around commas is trimmed and empty entries are dropped.
Weighted random picks from your own options, unbiased list shuffles and tunable coin flips — every decision reproducible with a seed.
Generated test data for fixtures and development
Uniform by default; pass weights (one positive number per option, any scale — 95,5 and 19,1 are equivalent) to bias the draw. count repeats the draw independently.
| Parameter | Type | Default & allowed | Description |
|---|---|---|---|
options
required
| list | example: rock,paper,scissors | Comma-separated options to pick from: 1–100 items, each at most 100 characters. Whitespace around commas is trimmed and empty entries are dropped. |
weights | list | example: 5,3,2 | Relative weights, one per option in the same order. Each must be a number > 0 (the scale is arbitrary — only ratios matter). Length must equal 'options'. Omit for a uniform pick. |
options list required Comma-separated options to pick from: 1–100 items, each at most 100 characters. Whitespace around commas is trimmed and empty entries are dropped.
weights list Relative weights, one per option in the same order. Each must be a number > 0 (the scale is arbitrary — only ratios matter). Length must equal 'options'. Omit for a uniform pick.
| Parameter | Type | Default & allowed | Description |
|---|---|---|---|
count | int | default: 1 allowed: 1 – 100 example: 3 | How many records to generate (1–100). |
seed | int | example: 42 | Deterministic output: the same seed always returns the same records. Omit for random (the used seed is echoed in meta.seed). |
fields | list | example: index,value | Return only these fields (comma-separated). Mutually exclusive with 'exclude'. |
exclude | list | example: value | Return all fields except these (comma-separated). |
format | enum | default: json allowed: json | ndjson | csv example: csv | Response format: json envelope, ndjson (one record per line) or csv. |
pretty | boolean | default: false example: true | Pretty-print the JSON response. |
unwrap | boolean | default: false example: true | Drop the envelope: return the raw array/object without data/meta wrapper. |
count int How many records to generate (1–100).
seed int Deterministic output: the same seed always returns the same records. Omit for random (the used seed is echoed in meta.seed).
fields list Return only these fields (comma-separated). Mutually exclusive with 'exclude'.
exclude list Return all fields except these (comma-separated).
format enum Response format: json envelope, ndjson (one record per line) or csv.
pretty boolean Pretty-print the JSON response.
unwrap boolean Drop the envelope: return the raw array/object without data/meta wrapper.
| Field | Type | Description | Example |
|---|---|---|---|
index | integer | Zero-based position of this independent draw in the returned batch. | 0 |
value | string | The picked option — always one of the provided 'options'. | rock |
index integer Zero-based position of this independent draw in the returned batch.
example: 0
value string The picked option — always one of the provided 'options'.
example: rock
/api/random/pick?options=rock,paper,scissors {
"data": [
{
"index": 0,
"value": "paper"
}
],
"meta": {
"endpoint": "random",
"route": "/pick",
"count": 1,
"seed": 42,
"params": {
"options": [
"rock",
"paper",
"scissors"
]
},
"generatedAt": "2026-07-29T08:13:22.000Z"
}
} /api/random/pick?options=hit,critical&weights=95,5&count=20&seed=7 {
"data": [
{
"index": 0,
"value": "hit"
},
{
"index": 1,
"value": "hit"
},
{
"index": 2,
"value": "hit"
},
{
"index": 3,
"value": "hit"
},
{
"index": 4,
"value": "hit"
},
{
"index": 5,
"value": "hit"
},
{
"index": 6,
"value": "critical"
},
{
"index": 7,
"value": "hit"
},
{
"index": 8,
"value": "hit"
},
{
"index": 9,
…
"generatedAt": "2026-07-29T08:13:22.000Z"
}
} /api/random/pick?options=A,B,C&weights=50,30,20&count=100&seed=42 {
"data": [
{
"index": 0,
"value": "A"
},
{
"index": 1,
"value": "A"
},
{
"index": 2,
"value": "C"
},
{
"index": 3,
"value": "A"
},
{
"index": 4,
"value": "C"
},
{
"index": 5,
"value": "A"
},
{
"index": 6,
"value": "A"
},
{
"index": 7,
"value": "C"
},
{
"index": 8,
"value": "A"
},
{
"index": 9,
…
"generatedAt": "2026-07-29T08:13:22.000Z"
}
} An unbiased Fisher–Yates permutation of your items. count returns several independent shuffles of the same list.
| Parameter | Type | Default & allowed | Description |
|---|---|---|---|
items
required
| list | example: alice,bob,carol,dave | Comma-separated items to shuffle: 2–100 items. Whitespace around commas is trimmed and empty entries are dropped. |
items list required Comma-separated items to shuffle: 2–100 items. Whitespace around commas is trimmed and empty entries are dropped.
| Parameter | Type | Default & allowed | Description |
|---|---|---|---|
count | int | default: 1 allowed: 1 – 100 example: 3 | How many records to generate (1–100). |
seed | int | example: 42 | Deterministic output: the same seed always returns the same records. Omit for random (the used seed is echoed in meta.seed). |
fields | list | example: index,items | Return only these fields (comma-separated). Mutually exclusive with 'exclude'. |
exclude | list | example: shuffled | Return all fields except these (comma-separated). |
format | enum | default: json allowed: json | ndjson | csv example: csv | Response format: json envelope, ndjson (one record per line) or csv. |
pretty | boolean | default: false example: true | Pretty-print the JSON response. |
unwrap | boolean | default: false example: true | Drop the envelope: return the raw array/object without data/meta wrapper. |
count int How many records to generate (1–100).
seed int Deterministic output: the same seed always returns the same records. Omit for random (the used seed is echoed in meta.seed).
fields list Return only these fields (comma-separated). Mutually exclusive with 'exclude'.
exclude list Return all fields except these (comma-separated).
format enum Response format: json envelope, ndjson (one record per line) or csv.
pretty boolean Pretty-print the JSON response.
unwrap boolean Drop the envelope: return the raw array/object without data/meta wrapper.
| Field | Type | Description | Example |
|---|---|---|---|
index | integer | Zero-based position of this independent shuffle in the returned batch. | 0 |
items | string[] | The input items in their original order, echoed for easy comparison. | ["alice","bob","carol","dave"] |
shuffled | string[] | The same items in random order — an unbiased Fisher–Yates permutation. | ["carol","alice","dave","bob"] |
index integer Zero-based position of this independent shuffle in the returned batch.
example: 0
items string[] The input items in their original order, echoed for easy comparison.
example: ["alice","bob","carol","dave"]
shuffled string[] The same items in random order — an unbiased Fisher–Yates permutation.
example: ["carol","alice","dave","bob"]
/api/random/shuffle?items=alice,bob,carol,dave {
"data": [
{
"index": 0,
"items": [
"alice",
"bob",
"carol",
"dave"
],
"shuffled": [
"alice",
"dave",
"carol",
"bob"
]
}
],
"meta": {
"endpoint": "random",
"route": "/shuffle",
"count": 1,
"seed": 42,
"params": {
"items": [
"alice",
"bob",
"carol",
"dave"
]
},
"generatedAt": "2026-07-29T08:13:22.000Z"
}
} /api/random/shuffle?items=paris,london,berlin,madrid&seed=7 {
"data": [
{
"index": 0,
"items": [
"paris",
"london",
"berlin",
"madrid"
],
"shuffled": [
"paris",
"london",
"madrid",
"berlin"
]
}
],
"meta": {
"endpoint": "random",
"route": "/shuffle",
"count": 1,
"seed": 7,
"params": {
"items": [
"paris",
"london",
"berlin",
"madrid"
]
},
"generatedAt": "2026-07-29T08:13:22.000Z"
}
} /api/random/shuffle?items=ace,king,queen,jack,ten&count=5&seed=3 {
"data": [
{
"index": 0,
"items": [
"ace",
"king",
"queen",
"jack",
"ten"
],
"shuffled": [
"ten",
"queen",
"jack",
"ace",
"king"
]
},
{
"index": 1,
"items": [
"ace",
"king",
"queen",
"jack",
"ten"
],
"shuffled": [
"queen",
"ace",
"king",
"jack",
"ten"
]
},
{
"index": 2,
"items": [
"ace",
…
"generatedAt": "2026-07-29T08:13:22.000Z"
}
} Returns true with the given probability — 0 is never, 1 is always, 0.5 is a fair coin. count gives independent flips.
| Parameter | Type | Default & allowed | Description |
|---|---|---|---|
probability | float | default: 0.5 allowed: 0 – 1 example: 0.7 | Probability that the result is true, from 0 (never) to 1 (always). |
probability float Probability that the result is true, from 0 (never) to 1 (always).
| Parameter | Type | Default & allowed | Description |
|---|---|---|---|
count | int | default: 1 allowed: 1 – 100 example: 3 | How many records to generate (1–100). |
seed | int | example: 42 | Deterministic output: the same seed always returns the same records. Omit for random (the used seed is echoed in meta.seed). |
fields | list | example: index,value | Return only these fields (comma-separated). Mutually exclusive with 'exclude'. |
exclude | list | example: probability | Return all fields except these (comma-separated). |
format | enum | default: json allowed: json | ndjson | csv example: csv | Response format: json envelope, ndjson (one record per line) or csv. |
pretty | boolean | default: false example: true | Pretty-print the JSON response. |
unwrap | boolean | default: false example: true | Drop the envelope: return the raw array/object without data/meta wrapper. |
count int How many records to generate (1–100).
seed int Deterministic output: the same seed always returns the same records. Omit for random (the used seed is echoed in meta.seed).
fields list Return only these fields (comma-separated). Mutually exclusive with 'exclude'.
exclude list Return all fields except these (comma-separated).
format enum Response format: json envelope, ndjson (one record per line) or csv.
pretty boolean Pretty-print the JSON response.
unwrap boolean Drop the envelope: return the raw array/object without data/meta wrapper.
| Field | Type | Description | Example |
|---|---|---|---|
index | integer | Zero-based position of this independent trial in the returned batch. | 0 |
value | boolean | The flip result — true with the requested probability. | true |
probability | float | Echo of the probability that produced this flip (default 0.5). | 0.7 |
index integer Zero-based position of this independent trial in the returned batch.
example: 0
value boolean The flip result — true with the requested probability.
example: true
probability float Echo of the probability that produced this flip (default 0.5).
example: 0.7
/api/random/boolean {
"data": [
{
"index": 0,
"value": true,
"probability": 0.5
}
],
"meta": {
"endpoint": "random",
"route": "/boolean",
"count": 1,
"seed": 42,
"params": {
"probability": 0.5
},
"generatedAt": "2026-07-29T08:13:22.000Z"
}
} /api/random/boolean?probability=0.7&seed=11 {
"data": [
{
"index": 0,
"value": true,
"probability": 0.7
}
],
"meta": {
"endpoint": "random",
"route": "/boolean",
"count": 1,
"seed": 11,
"params": {
"probability": 0.7
},
"generatedAt": "2026-07-29T08:13:22.000Z"
}
} /api/random/boolean?probability=0.1&count=50&seed=2 {
"data": [
{
"index": 0,
"value": false,
"probability": 0.1
},
{
"index": 1,
"value": false,
"probability": 0.1
},
{
"index": 2,
"value": false,
"probability": 0.1
},
{
"index": 3,
"value": false,
"probability": 0.1
},
{
"index": 4,
"value": false,
"probability": 0.1
},
{
"index": 5,
"value": false,
"probability": 0.1
},
{
"index": 6,
"value": false,
"probability": 0.1
},
{
"index": 7,
"value": false,
…
"generatedAt": "2026-07-29T08:13:22.000Z"
}
} Three tiny decide-for-me tools driven entirely by your own values — the API contributes only the randomness:
/api/random/pick — draw one of your comma-separated options. Add weights (one number > 0 per option, same order, any scale) to bias the draw: options=hit,critical&weights=95,5 makes critical roughly a 1-in-20 result. Omit weights for a uniform draw./api/random/shuffle — your items in a random order via an unbiased Fisher–Yates permutation, with the original order echoed alongside for easy diffing./api/random/boolean — a coin flip where probability sets the chance of true (0 = never, 1 = always, default 0.5).Each route returns a single answer by default (count=1); raise count (up to 100) for repeated independent draws — e.g. ?count=100 on /pick buckets a whole batch in one request. Every record carries a zero-based index, so repeated outcomes remain distinct trials. Pin a seed and the same request returns the same decisions forever, so raffles, A/B assignments and test fixtures stay auditable and reproducible.
Bad input never degrades silently: mismatched weights/options lengths, zero/negative/non-numeric weights, out-of-range probabilities and over-long option lists are all rejected with a 400 that names the offending parameter.
Yes — /pick accepts options=a,b,c with weights=5,3,1, making the first option five times likelier than the last.
/shuffle returns your items in random order — same seed, same order, forever; omit the seed for a fresh permutation.
/boolean?probability=0.8 returns true 80% of the time — perfect for feature-flag and A/B fixtures.
Roll dice in standard NdS+M notation (2d6+3, d20, 4d8-2) — get each die result, the modifier and the total, with seedable, reproducible rolls.
Random integers or floats in any range — control decimal precision, draw guaranteed-unique values, and pin a seed for reproducible sequences.
Random English words by part of speech — nouns, verbs, adjectives or adverbs — with working length filters, seedable output and honest 400s when nothing fits.
Generate seed-reproducible UUIDs and compact IDs, or inspect any canonical UUID's RFC 9562 variant, version and UUIDv7 timestamp fields.