Skip to content

Main content

Random Weighted Bucket Member Draw

Replay seed or one advancing injected source, uniform over the explicitly stated finite support, not cryptographically secure. Choose an explicit positive-weight bucket, then a uniform member position within it; not uniform over all flattened members. Zero-weight empty buckets permitted.

Loading tool…

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

  1. Enter bucketsJson, weights, seed using the definitions below. Serialize JSON text fields in the decoded shape shown below.
  2. Run the operation. Resolve input-format errors before interpreting an output.
  3. 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 fieldMeaning and unitsAccepted input
bucketsJsonJSON 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.
weightsNonnegative 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.
seedNonblank 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.

json
{
  "bucketsJson": [
    [
      "a",
      "b"
    ],
    [
      "c"
    ]
  ]
}
Output fieldInterpretation
resultObject containing the fields below.
result.seedOriginal supplied seed string; injected-source replay additionally requires that source’s state.
result.bucketZero-based selected bucket index.
result.positionZero-based selected member position within its original bucket.
result.valueSelected literal member or exact integer text, under the stated generator.
json
{
  "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

  1. Tool behavior and example: Random Weighted Bucket Member Draw — tool.io

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.