LeetCode 528, Medium. Topics: Array, Math, Binary Search, Prefix Sum. View on LeetCode.
Generate this problem as a practice environment: tested reference solution, 15 parametrized pytest cases, and a playground notebook:
Problem
You are given a 0-indexed array of positive integers w where w[i] describes the weight of the i^th index.
You need to implement the function pick_index(), which randomly picks an index in the range [0, w.length - 1] (inclusive) and returns it. The probability of picking an index i is w[i] / sum(w).
- For example, if
w = [1, 3], the probability of picking index 0 is 1 / (1 + 3) = 0.25 (i.e., 25%), and the probability of picking index 1 is 3 / (1 + 3) = 0.75 (i.e., 75%).
Examples
Constraints
- 1 <= w.length <= 10^4
- 1 <= w[i] <= 10^5
pickIndex will be called at most 10^4 times.
Solution
Reference implementation from solution.py on GitHub, full suite in test_solution.py:
Complexity
Grind, NeetCode All. Last modified on September 7, 2026