fix random item draw
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