Files
lofi/src/lib/fisheryates.ts

13 lines
433 B
TypeScript

// source: https://decipher.dev/30-seconds-of-typescript/docs/shuffle/
// modified to use existing SIMDMersenneTwister constructor for random number generation
import type { SIMDMersenneTwister } from "./mersenne";
export const fisherYates = (arr: any[], sfml: SIMDMersenneTwister) => {
let m = arr.length;
while (m) {
const i = Math.floor(sfml.random() * m--);
[arr[m], arr[i]] = [arr[i], arr[m]];
}
return arr;
};