Description
Choose an explicit positive-weight bucket, then a uniform member position within it; not uniform over all flattened members. Zero-weight empty buckets permitted.
A random construction is defined by its sampling support: positions, permutations, complete tilings, proposal sequences or another explicit set. Uniform choices at one stage do not necessarily make final visible outcomes uniform. A replay seed gives a deterministic sequence; equal values can hide different sampled positions. These tools are for reproducible synthetic examples rather than cryptographic entropy.
Choose an explicit positive-weight bucket, then a uniform member position within it; not uniform over all flattened members. Zero-weight empty buckets permitted.
When to use this tool
Use this tool to choose an explicit positive-weight bucket, then a uniform member position within it; not uniform over all flattened members. Zero-weight empty buckets permitted.
How to use the tool and how it works
- Enter bucketsJson, weights, seed using the definitions below. Serialize JSON text fields in the decoded shape shown below.
- Run the operation. Resolve input-format errors before interpreting an output.
- Read result.seed, result.bucket, result.position, result.value, using the stated boundary, ordering, sign and absence conventions.
Choose a bucket in proportion to its nonnegative supplied weight, then draw a uniform position within that bucket. Return bucket, position and value.1
| Input field | Meaning and units | Accepted input |
|---|---|---|
| bucketsJson | JSON array of literal string-member arrays; nonempty/zero-weight rules are stated above. | Text, at most 8,192 UTF-16 code units; narrower grammar/range rules also apply. |
| weights | Nonnegative bucket weights aligned with buckets; total must be positive and finite. | Dense list of at most 128 finite numbers, under the stated integer/range rules. |
| seed | Nonblank replay seed, at most 256 UTF-16 code units; an injected source overrides seeded draws. | Text, at most 8,192 UTF-16 code units; narrower grammar/range rules also apply. |
These decoded structures show the examples inside JSON text fields. Supply their serialized JSON strings as input.
{
"bucketsJson": [
[
"a",
"b"
],
[
"c"
]
]
} | Output field | Interpretation |
|---|---|
| result | Object containing the fields below. |
| result.seed | Original supplied seed string; injected-source replay additionally requires that source’s state. |
| result.bucket | Zero-based selected bucket index. |
| result.position | Zero-based selected member position within its original bucket. |
| result.value | Selected literal member or exact integer text, under the stated generator. |
{
"input": {
"bucketsJson": "[[\"a\",\"b\"],[\"c\"]]",
"weights": [
0,
1
],
"seed": "batch56"
},
"output": {
"result": {
"seed": "batch56",
"bucket": 1,
"position": 0,
"value": "c"
}
}
} Limitations and assumptions
- Weights must have a positive finite total. An empty bucket is allowed only with weight zero; flattened members generally have unequal probabilities.
- A nonblank seed of at most 256 UTF-16 code units is required. With ordinary use the seed initializes one deterministic advancing source; an application-injected random source takes precedence and the seed alone then cannot replay the result. Uniformity statements assume independent uniform source draws in [0,1). Source calls are bounded and degenerate injected sources can fail a rejection budget. This is not cryptographically secure.
- Every declared outer field is required and unknown outer fields are rejected. Strings and JSON text have size limits, lists are bounded to 128 entries, and JSON nesting/node counts are bounded. Tighter operation-specific bounds stated above take precedence.
- Ordinary numeric outputs must be finite and within safe-integer magnitude. Exact large lengths/counts use decimal strings. Original record indexes and code-unit positions are zero-based; span ends are exclusive unless stated otherwise.
Alternative or Complementary methods
Choose a generator whose support matches the intended experiment and retain source-position provenance. Use a separate statistically justified process model or cryptographic source where those properties matter.
References
Similar or alternative tools
- Random Bucket Representative Order
Choose uniformly within each nonempty bucket then independently permute representative positions; repeated rendered values remain separate source positions.
- Random Excluded Ticket Draw
Draw uniform remaining unique ticket IDs without replacement after explicit excluded membership; infeasible counts reject, no persistent history.