Мне трудно детерминировать перемешивание массива, , т.е. со случайным начальным числом в Rust. Чего я пытаюсь достичь (в псевдокоде):
let v = vec![0, 1, 2, 3];
pseudo_shuffle(v, randomSeed1) // always produces e.g. [3,1,2,0]
pseudo_shuffle(v, randomSeed2) // always produces e.g. [0,2,3,1]
В другом ответе о переполнении стека Я узнал, как использовать rand::Rng::shuffle()
, чтобы перетасовать вектор недетерминированным образом, но, похоже, он не предоставляет API для применения случайного Начать с функции генерации, и мне трудно найти решение, которое не использует какой-то нелепый алгоритм сложности n!
.