Skip to content

fix random item draw

STEVAN Antoine requested to merge fix-shuffle into main

related to

description

!122 (merged) introduced a draw_unique_indices function which uses a HashSet to accumulate unique indices in the range 0..<len. however, a HashSet does not preserve the order of insertion when iterating over the elements of the set... which results in apparent randomness, even though the RNG seed is the same 😮

this MR switches back to using shuffle which used to work, even though a bit less performant 👌
it's basically a revert of !122 (merged), while keeping the refactoring into random.rs.

measuring the performance

i did run the same timing experiment from !122 (merged) but with main on bb55005 and the MR on fix-shuffle

env main mr improvement
fixed:0 6sec 244ms 238µs 45ns 8sec 734ms 929µs 328ns -39.88783363238997
fixed:1 639ms 720µs 39ns 731ms 360µs 261ns -14.325051024390373

we loose a bit

Edited by STEVAN Antoine

Merge request reports