mirror of
https://github.com/ziglang/zig.git
synced 2026-02-14 21:38:33 +00:00
std.rand: make weightedIndex proportions param a const slice
The function does not mutate the proportions and the signature should reflect that.
This commit is contained in:
parent
527055a821
commit
e6be6d9768
@ -343,7 +343,7 @@ pub const Random = struct {
|
||||
///
|
||||
/// This is useful for selecting an item from a slice where weights are not equal.
|
||||
/// `T` must be a numeric type capable of holding the sum of `proportions`.
|
||||
pub fn weightedIndex(r: std.rand.Random, comptime T: type, proportions: []T) usize {
|
||||
pub fn weightedIndex(r: std.rand.Random, comptime T: type, proportions: []const T) usize {
|
||||
// This implementation works by summing the proportions and picking a random
|
||||
// point in [0, sum). We then loop over the proportions, accumulating
|
||||
// until our accumulator is greater than the random point.
|
||||
|
||||
@ -452,7 +452,7 @@ test "Random weightedIndex" {
|
||||
var prng = DefaultPrng.init(0);
|
||||
const random = prng.random();
|
||||
|
||||
var proportions = [_]T{ 2, 1, 1, 2 };
|
||||
const proportions = [_]T{ 2, 1, 1, 2 };
|
||||
var counts = [_]f64{ 0, 0, 0, 0 };
|
||||
|
||||
const n_trials: u64 = 10_000;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user